我尝试在 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;