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