Can';t使用Delphi打开Https TSL页面-Indy错误:SSL23\u GET\u SERVER\u HELLO
我想在DelphiXe5中使用Indy的Can';t使用Delphi打开Https TSL页面-Indy错误:SSL23\u GET\u SERVER\u HELLO,delphi,ssl,https,indy,delphi-xe5,Delphi,Ssl,Https,Indy,Delphi Xe5,我想在DelphiXe5中使用Indy的TIdHTTP通过HTTPS阅读HTML页面 ssleay32.dll和libeay32.dll位于主程序文件夹中 我收到一个错误:SSL23\u GET\u SERVER\u HELLO。我能做些什么来解决这个问题 function get_page_text:string; var Response: String; HTTPClient: TidHTTP; const url = 'https://www.lustundreiz.com/
TIdHTTP
通过HTTPS阅读HTML页面
ssleay32.dll
和libeay32.dll
位于主程序文件夹中
我收到一个错误:SSL23\u GET\u SERVER\u HELLO
。我能做些什么来解决这个问题
function get_page_text:string;
var
Response: String;
HTTPClient: TidHTTP;
const
url = 'https://www.lustundreiz.com/login';
begin
HTTPClient := TidHTTP.Create;
HTTPClient.AllowCookies := True;
HTTPClient.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
Response := HTTPClient.get(url);
HTTPClient.Free;
result := response;
end;
当您未指定版本时,
TIdSSLIOHandlerSocketOpenSSL
使用的默认SSL/TLS版本是TLSv1,而不是SSLv23。因此,对于您来说,出现SSL23错误是非常罕见的
许多现代Web服务器现在需要TLS 1.1或更高的TLS扩展,如SNI等。因此,在代码< > TysSLooHooLoLoSoCopopsSDS.SSLOPTION中,考虑启用代码< > SLVTLVS1O1/<代码> SSLVTLV1L2 2/代码>,除了默认的<代码> SSLVTLV1之外,SSLVIEWS/<代码>属性。并确保使用最新版本的Indy和OpenSSL DLL来支持这些版本
您还应该将代码包装在try..finally
中,这样即使Get()
引发异常,您也可以释放TIdHTTP
对象
试试这个:
function get_page_text:string;
var
HTTPClient: TIdHTTP;
SSL: TIdSSLIOHandlerSocketOpenSSL;
const
url = 'https://www.lustundreiz.com/login';
begin
HTTPClient := TIdHTTP.Create;
try
HTTPClient.AllowCookies := True;
// set other HTTP properties as needed...
SSL := TIdSSLIOHandlerSocketOpenSSL.Create(HTTPClient);
SSL.SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
// set other SSL properties as needed...
HTTPClient.IOHandler := SSL;
Result := HTTPClient.Get(url);
finally
HTTPClient.Free;
end;
end;
好的,在我从Delphi XE5更新到Delphi XE10之后,代码运行良好,没有任何错误。
感谢Remy的支持。感谢您的快速响应,但如果我将您的代码复制到我的IDE中,则第行出现错误:TIdSSLIOHandlerSocketOpenSSL(HTTPClient.IOHandler)。SSLVersions:=[sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2];错误:SSLVersions->notknown@Ingo:对不起,我打错了。我修好了。好的,谢谢你的代码更新。但是如果我运行你的代码,我会得到同样的错误。SSL23\u获取\u服务器\u你好:sslv3警报hanschake故障完整错误代码为:错误。14077410:SSL例程:SSL23\u获取\u服务器\u你好:sslv3警报hanschakefailure@Ingo:使用最新版本的Indy和OpenSSL,我显示的代码对我来说很好,您提供的URL没有SSL错误,我收到的是HTML。如果您使用的是XE5附带的Indy版本,则应升级Indy版本