我在我的应用程序中使用了TIdHTTP
,我的用户请求具有特定超时的Socks4 / 5功能。我使用我的应用程序与SSL网站进行通信,而我之前只使用常规ProxyParams
。
如何在具有特定超时的TIdHTTP
组件中添加Socks4和/或Socks5支持?
编辑:
由于我没有任何Socks4 / Socks5代理,我创建了自己的新应用程序进行测试。
我添加了TIdSocksServer
并为其分配了TIdServerIOHandlerSSLOpenSSL
。
为确保连接,我在OnConnect
添加了一个Messagebox。服务器侦听端口8080并设置为Active:=True;
以下是我的TIdHTTP
组件的代码:
procedure NewQuery;
var
IDHTTP : TIdHTTP;
SSL : TIdSSLIOHandlerSocketOpenSSL;
Socks : TIdSocksInfo;
begin
Socks := TidSocksInfo.Create (NIL);
IDHTTP := TIdHTTP.Create(NIL);
SSL := TIdSSLIOHandlerSocketOpenSSL.Create(NIL);
IDHTTP.IOHandler := SSL;
SSL.TransparentProxy := Socks;
Socks.Host := 'localhost';
Socks.Port := 8080;
Socks.Authentication := saNoAuthentication;
Socks.Version := svSocks4; // or svSocks5
IDHTTP.ConnectTimeout := 5000; // 5 seconds
IDHTTP.Get ('www.google.com');
end;
不确定我是否以正确的方式使用了它,但似乎GET请求在没有连接到socks服务器的情况下工作。我使用它错了吗?
答案 0 :(得分:2)
将TIdSocksInfo
组件分配给IOHandler的TransparentProxy
属性。