我正在使用 TIdHTTPProxyServer 现在我想在成功连接到目标 HTTP 服务器但很长时间(例如 3 分钟)没有收到响应时终止连接 目前我没有找到相关的属性(property)或事件。并且即使客户端在代理服务器收到来自 HTTP 服务器的响应之前终止连接。在代理服务器收到响应之前,不会触发 OnException 事件。 (也就是说,如果代理服务器仍然没有收到来自HTTP Server的响应,我什至不知道客户端已经终止了连接...)
我们将不胜感激。
谢谢!
威利
最佳答案
Indy 默认使用无限超时。要执行您要求的操作,您需要将出站连接的 ReadTimeout 属性设置为目标服务器。您可以通过 TIdHTTPProxyServerContext.OutboundClient
属性访问该连接。使用 OnHTTPBeforeCommand
事件,它在 OutboundClient 连接到目标服务器之前触发,例如:
#include "IdTCPClient.hpp"
void __fastcall TForm1::IdHTTPProxyServer1HTTPBeforeCommand(TIdHTTPProxyServerContext *AContext)
{
static_cast<TIdTCPClient*>(AContext->OutboundClient)->ReadTimeout = ...;
}
关于c++ - 如何为 HTTP 代理服务器设置超时(不是连接超时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11255454/