我正在 Delphi 10.2.3 Tokyo 中使用
THTTPRIO
组件来使用 Web 服务。我必须为 TLS 1.2/1.3 配置 Internet 选项设置,以便我可以进行连接。
是否可以在连接上强制使用 TLS 1.2/1.3?
我知道
THTTPRIO
依赖于WinInet。可以使用任何其他方式来完成 TLS 吗?
我尝试在
USE_INDY
中声明 Soap.SOAPHTTPTrans.pas
指令,但无法加载证书。它说证书不正确。
还有其他想法吗?
我建议你使用Indy组件。
看下面的例子:
uses
IdHTTP, IdSSLOpenSSL, IdSSL, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack;
procedure UseTLSWithIndy;
var
IdHTTP: TIdHTTP;
SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
IdHTTP := TIdHTTP.Create(nil);
SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
try
SSLIOHandler.SSLOptions.Method := sslvTLSv1_2;
SSLIOHandler.SSLOptions.SSLVersions := [sslvTLSv1_2, sslvTLSv1_3];
IdHTTP.IOHandler := SSLIOHandler;
try
ShowMessage(IdHTTP.Get('https://example.com'));
except
on E: Exception do
ShowMessage(E.Message);
end;
finally
IdHTTP.Free;
SSLIOHandler.Free;
end;
end;