gpt4 book ai didi

delphi - TNetHTTPClient 和 Delphi 10.3 的连接超时

转载 作者:行者123 更新时间:2023-12-01 17:43:27 38 4
gpt4 key购买 nike

我尝试在 TNetHTTPClient 上为无响应站点设置 6 秒的连接超时:

NetHTTPClient1.ConnectionTimeout := 6000;

但它不起作用,超时似乎总是相同的默认值(大约 100 万)我是否遗漏了 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;

最佳答案

您尚未提供示例代码的目标平台。根据documentation OS XiOS 不支持 ConnectionTimeout 属性。在这些平台下设置 ConnectionTimeout 无效。

除此之外,您可能会在成功连接到服务器后发生响应超时,但服务器无法在指定的时间间隔内处理请求。

不幸的是,无法通过Exception类来区分两者,因为您得到的只是一般的ENetHttpClientException。至少您可以看到错误消息中的差异 - 发送接收(见下文)。

测试示例代码(Windows平台):连接超时

NetHTTPClient1.ConnectionTimeout := 1000;
NetHTTPClient1.Get('http://www.google.com:81');
{ raises ENetHttpClientException with message 'Error sending data: (12002) The operation timed out'. }

响应超时

NetHTTPClient1.ResponseTimeout := 1000;
NetHTTPClient1.Get('https://httpstat.us/200?sleep=5000');
{ raises ENetHTTPClientException with message 'Error receiving data: (12002) The operation timed out'. }

有 4 种不同的 timeouts supported by WinHTTP :

  • 解决超时问题
  • 连接超时
  • 发送超时
  • 接收超时

当前 Windows 平台实现的 TNetHttpClient 始终将解析超时设置为 0,将连接超时设置为 ConnectionTimeout,并将发送和接收超时设置为 ResponseTimeout .

关于delphi - TNetHTTPClient 和 Delphi 10.3 的连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56416108/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com