idhttp 访问 https 的问题。
TTestThread = class(TThread)
public
httpMain: TIdHTTP;
sslMain: TIdSSLIOHandlerSocketOpenSSL;
constructor Create; overload;
destructor Destroy; override;
procedure Execute; override;
end;
constructor TTestThread.Create;
begin
inherited Create(False);
httpMain := TIdHTTP.Create(nil);
sslMain := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
sslMain.SSLOptions.Method := sslvSSLv3;
sslMain.SSLOptions.Mode := sslmUnassigned;
httpMain.AllowCookies := True;
httpMain.HandleRedirects := True;
httpMain.HTTPOptions := [hoKeepOrigProtocol, hoForceEncodeParams];
httpMain.ReadTimeout := 20000;
httpMain.ConnectTimeout := 10000;
end;
destructor TTestThread.Destroy;
begin
httpMain.Free;
sslMain.Free;
inherited Destroy;
end;
procedure TTestThread.Execute;
begin
while not Terminated do begin
httpMain.IOHandler := sslMain;
httpMain.Request.UserAgent := 'Mozilla/3.0 (compatible)';
httpMain.Get('https://mail.qq.com/cgi-bin/loginpage?');
end;
Destroy;
end;
如果我创建并执行50个线程(上面的代码),过一段时间会出现“Socket Error # 10038 Socket operation on non-socket.”。
如果出现了这个异常,这个 idhttp 将会彻底失效,get 将永远是“不能访问内存 000004” 什么的。
请问我应该如何避免这个异常(虽然上面的代码不容易出错,但如果使用代理连接,10038 异常会非常非常多)。
单线程执行上述代码永远不会出现 10038,即便使用代理连接。
各位大大们,指点我一下吧。
...全文
相关推荐
Idhttp SSl 网站
描述中提到的"Idhttp Post 或者 Get SSL网站都会出错",暗示了在尝试使用IDHTTP组件执行POST或GET方法访问HTTPS网站时可能遇到了错误。
D7_IDHTTP访问HTTPS所需DLL.rar
这个“D7_IDHTTP访问HTTPS所需DLL.rar”压缩包正是为了解决这个问题而提供的。
IdHTTP.rar_idhttp_in
**HTTPS支持:** - IdHTTP组件也支持HTTPS协议,通过设置`SSLOptions`属性可以配置SSL/TLS连接。4.
iDHTTP.rar_Free!_http proxy
使用iDHTTP,开发者可以实现以下功能:1. 发送HTTP GET和POST请求,获取网页内容。2. 设置和使用HTTP代理服务器,通过代理访问互联网。3.
IdHttp服务端和客户端.rar
**安全性考虑**:在实际应用中,除了基本的数据传输,还需要考虑安全问题,如使用HTTPS协议加密通信,防止中间人攻击;对于敏感数据,可能需要进行加密处理,防止数据泄露。10.


