【发布时间】:2019-10-18 08:15:59
【问题描述】:
我尝试在 TNetHTTPClient 上为无响应的站点设置 6 秒的连接超时:
NetHTTPClient1.ConnectionTimeout := 6000;
但它不起作用,超时似乎总是相同的默认值(大约 1 百万)我是否缺少 ConnectionTimeout 或我的代码的某些内容?
编辑: 好的,我的错误,对于这个测试,我使用了一个(坏的)代理,它是没有响应的代理。因此,在代理不响应的情况下,ConnectionTimeout 似乎效率不高。我将发布有问题的模式代码示例。
编辑2:所以它似乎更像是“解决超时”而不是“连接超时”,代码: 首先经典连接一切正常(即使超时不是很准确)。
TempTime := Now; //TempTime : TDateTime;
try
NetHTTPClient1.ConnectionTimeout := 2000; // NetHTTPClient1 : TNetHTTPClient;
NetHTTPClient1.Get('http://www.google.com:81');
except
on E: Exception do
showmessage(E.ClassName + ' : ' + E.Message + ', Time : ' + IntToStr(trunc((Now-TempTime)*86400)));
结束;
现在超时不正常(代理错误):
NetHTTPClient1.ProxySettings := TProxySettings.Create('157.230.8.180',8080);
TempTime := Now;
try
NetHTTPClient1.ConnectionTimeout := 2000;
NetHTTPClient1.Get('http://www.google.com:81');
except
on E: Exception do
showmessage(E.ClassName + ' : ' + E.Message + ', Time : ' + IntToStr(trunc((Now-TempTime)*86400)));
end;
【问题讨论】:
-
显示重现问题的完整代码。
-
你好大卫我编辑了我的帖子,我将把代码和例子放在一起。