THTTPRio TLS 1.2

时间:2019-06-12 17:50:03

标签: delphi delphi-10.2-tokyo

我正在尝试使用THTTPRio组件支持TLS 1.2。

在其他项目中,我之前使用TIdSSLIOHandlerSocketOpenSSL和TIdHTTP的IOHandler支持TLS 1.2。这个是SOAP,因此我尝试使用HTTPRio组件。

除非我可以启用INDY_CUSTOM_IOHANDLER指令,然后通过THttpRio.HTTPWebNode访问它,否则它似乎无法访问IOHandler。

我想我的选择是:

  1. 强制THTTPRio使用INDY,但是我不确定这会如何以及会产生什么影响。
  2. 手动创建和解析肥皂数据包并使用TIdHTTP。

有没有比这两个选项更好的方法?

Delphi 10.2版本25.0.29899.2631 Indy版本:10.6.2.5366

1 个答案:

答案 0 :(得分:0)

我不知道从哪里开始使用Delphi 10.2,但是在Delphi 10.3中,内部HTTP客户端已被新的(跨平台的)THttpClient(单元System.Net.HttpClient)取代使用TWinHTTPClient(基于Winapi.WinHTTP)实例进行实际工作。

要使用Indy,您需要基于Indy实现自己的自定义THTTPClient,并使用以下方法注销当前的http / https处理程序:

TURLSchemes.UnRegisterURLClientScheme('HTTP');
TURLSchemes.UnRegisterURLClientScheme('HTTPS');

然后使用以下命令注册自定义的Indy实现:

TIndyHTTPClient = class(THTTPClient)
  // Your implementation
end;

TURLSchemes.RegisterURLClientScheme(TIndyHTTPClient, 'HTTP');
TURLSchemes.RegisterURLClientScheme(TIndyHTTPClient, 'HTTPS');