我正在使用TIdHTTPProxyServer,现在我希望在连接到目标HTTP服务器成功但很长时间没有响应(例如3分钟)时终止连接 目前我找不到相关的财产或事件。即使客户端在代理服务器从HTTP服务器接收响应之前终止连接。在代理服务器收到响应之前,不会触发OnException事件。 (也就是说,如果代理服务器仍然没有收到来自HTTP Server的响应,我甚至不知道客户端已经终止了连接...)
任何帮助将不胜感激。
谢谢!
威利
答案 0 :(得分:1)
Indy默认使用无限超时。要执行您要求的操作,您需要将出站连接的ReadTimeout属性设置为目标服务器。您可以通过TIdHTTPProxyServerContext.OutboundClient
属性访问该连接。使用{OuterClient连接到目标服务器之前触发的OnHTTPBeforeCommand
事件,例如:
#include "IdTCPClient.hpp"
void __fastcall TForm1::IdHTTPProxyServer1HTTPBeforeCommand(TIdHTTPProxyServerContext *AContext)
{
static_cast<TIdTCPClient*>(AContext->OutboundClient)->ReadTimeout = ...;
}