全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4314
推到 Plurk!
推到 Facebook!

IdHttp的Get方法报"HTTP/1.1 404 Bad Request"错

缺席
rainbow57
一般會員


發表:2
回覆:3
積分:1
註冊:2008-09-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-05-27 14:43:26 IP:60.12.xxx.xxx 訂閱
我写了一个函数,传入参数是网络地址,使用idhttp的get方法取得该网址的源代码。
原来在Turbo Delphi2006中使用正常。
后来做了两个变动:
1、调用的代码写到了线程里面。
2、用了Delphi2010(最新的测试版)编译了一下。

之后就报错:HTTP/1.1 404 Bad Request
我的网络没问题,传入的网址,断点以后,拷贝到IE的地址栏里面也可以正常访问,但为什么会报这个错呢?
是Delphi2010/Delphi2009的Indy跟之前的版本有什么不同,还是idhttp不能在线程里面写?
下面是这个函数的代码
function GetWebPage(const Url: string): string;
var
idHttp: TIdHTTP;
begin
idHttp := TIdHTTP.Create(nil);
try
Result := idHttp.Get(Url);
except
on E:Exception do
begin
WriteStrToFile(GetCurrentDir '\Log.txt', E.Message);
idHttp.Disconnect;
idHttp.Free;
end;
end;
idHttp.Disconnect;
idHttp.Free;
end;
rainbow57
一般會員


發表:2
回覆:3
積分:1
註冊:2008-09-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-06-05 11:48:42 IP:60.190.xxx.xxx 訂閱
沒有人碰到過類似的問題嗎?
我目前可以確定的是,最新的Delphi版本裏面的Indy是Indy10,這個問題也不是因為線程才會這樣。
我新做了一個窗口,將放一個Memo控件、一個Idhttp控件,一個按鈕。屬性均是delphi默認的。
按鈕的Click事件中只有一行代碼:
Memo1.Lines.Text:=idhttp1.Get(Url);

這樣得到的結果,也是上面的那個錯誤。看來訪問我指定的網頁要設置什麽參數。
Url為http://mail.qq.com時,能正確執行,Url為http://hq.sinajs.cn/list=sh000001,sz399001
時,就報錯(樓上的那個Http1.1 Bad Request錯誤)。

麻煩懂的高手指導一下偶。
RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-06-05 22:04:04 IP:122.126.xxx.xxx 訂閱
就是線程。
我沒用 Indy ,要看 Indy 有沒有 multiThread 的設置
rainbow57
一般會員


發表:2
回覆:3
積分:1
註冊:2008-09-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-06-06 23:21:24 IP:125.118.xxx.xxx 訂閱
很抱歉,我試驗過,即使不是在線程裏面,也會出這樣的錯誤。
我經過試驗,好像是我制定的網址會出這個問題。有朋友說是因為Indy把我網址中的等號改成了問號。
由於對網路編程這塊不是很熟悉,所以沒有驗證。
rainbow57
一般會員


發表:2
回覆:3
積分:1
註冊:2008-09-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-06-09 15:22:02 IP:60.12.xxx.xxx 訂閱
问题已经解决。
原因是Indy10.2.3(没记错的话是这个版本吧),把我输入的网址中=替换成了?,所以造成错误。
我已经卸载了原装的,安装了Indy10.5.5。
系統時間:2024-04-24 6:36:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!