我正在尝试使用THTTPRio组件支持TLS 1.2。
在其他项目中,我之前使用TIdSSLIOHandlerSocketOpenSSL和TIdHTTP的IOHandler支持TLS 1.2。这个是SOAP,因此我尝试使用HTTPRio组件。
除非我可以启用INDY_CUSTOM_IOHANDLER指令,然后通过THttpRio.HTTPWebNode访问它,否则它似乎无法访问IOHandler。
我想我的选择是:
有没有比这两个选项更好的方法?
Delphi 10.2版本25.0.29899.2631 Indy版本:10.6.2.5366
答案 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');