現在delphi都發布到xe8了,tidhttp還有缺陷,那就是超時設置在沒有網絡或者連不上服務器的時候是無效的,不管你設置為多少都要10-20秒。connectTimeout和readTimeout都試過了,網上找了一圈,有人提出修改源碼,我沒試,應該也可以。
我采用的是把idhttp.get方法放到線程里,在主線程定時檢查返回狀態,這樣就可以控制超時時間了,偽代碼如下。
strResult:='';
Tthread.CreateAnonymousThread(
procedure
begin
strResult := idhttp.get('url');
end).Start;
for i := 0 to 4 do
begin
if strResult<>'' then
break;
application.ProcessMessages;
Tthread.Sleep(500);
application.ProcessMessages;
end;