0
我遇到了一些Idhttp.Get方法的問題。我認爲這是默認情況下在阻塞模式下工作(等待答案轉到下一行),但我只是看到它不等待答案轉到另一行。我使用線程,但我認爲這不是問題。該代碼是:IdHTTP.Get不等回答
IdHTTP1:= TIdHttp.Create(Application);
IdHTTP1.ConnectTimeout:= 10000;
IdHTTP1.Request.Clear;
IdHTTP1.Request.BasicAuthentication:= true;
IdHTTP1.Request.Username := Username;
IdHTTP1.Request.Password := Password;
try
IdHTTP1.Get(PbxURL); **//this should STOP here and wait for answer don't?**
HttpCode:= IdHTTP1.ResponseCode;
except
on E: EIdHTTPProtocolException do
HttpCode := IdHTTP1.ResponseCode;
end;
if HttpCode=200 then
Memo1.Lines.Append('Valid Get!');
所以,我剛纔注意到,我沒有得到正確的HttpCode值,因爲「獲取」的方法後,它只是繼續執行,而無需等待「獲得」完整的。我怎麼解決這個問題??
我同意。 Indy專門使用了阻塞套接字和阻塞操作,因此,直到'Get()'退出,無論是通常還是通過引發的異常,您的代碼都不可能繼續。 –
是的,你是對的。因爲我正在使用線程,所以我在錯誤的地方創建了IdHTTP,並且正在以這種方式工作。只是改變了創建我的IdHTTP對象的地方,它的工作。謝謝。 – HwTrap