Delphi:IdHTTP SSL不起作用.没错!

Delphi:IdHTTP SSL不起作用.没错!,第1张

概述我使用TidHTTP TIdSSLIOHandlerSocketOpenSSL 2 DLL:来自 http://indy.fulgan.com/SSL的ssleay32.dll和libeay32.dll. 但我可以在HTTP Analyzer中看到我的程序的所有工作!它可以用作HTTP,而不是HTTPS.如果我使用Opera,我看不到使用同一站点下载(https://esta.cbp.dhs.go 我使用TIDhttp TIDSSliOHandlerSocketopenSSL 2 DLL:来自 http://indy.fulgan.com/SSL的ssleay32.dll和libeay32.dll.

但我可以在http Analyzer中看到我的程序的所有工作!它可以用作http,而不是httpS.如果我使用Opera,我看不到使用同一站点下载(https://esta.cbp.dhs.gov/esta).

我没有为TIDhttp和TIDSSliOHandlerSocketopenSSL设置任何特殊参数(可能是我必须但我不知道到底是什么).

我必须使用TIDSSLVersion(sslvSSLv23)SSL证书的位置吗?我在哪里可以获得此证书?还是只有RootCertfile?

如何将IDhttp的端口更改为443(我必须这样做吗?)?

我用:

procedure TForm1.FormCreate(Sender: TObject);var mem:tmemorystream;begintry  mem:=TMemoryStream.Create();  try    IDhttp1.Get('https://esta.cbp.dhs.gov/esta/',Mem);  except   on E : Exception do ShowMessage(E.Message);  end;finally  mem.Free;  IDhttp1.Free;end;end;

请看我的视频:http://liga-installer.realservers.info/ssl.mp4

截屏:

谢谢谢谢你的帮助!

解决方法 这个简单的示例适用于Delphi XE开箱即用,因此您无需在客户端更改端口或使用证书.它基于 an example from RosettaCode:
Uses  IDhttp,IDSSLOpenSSL

procedure TForm2.button1Click(Sender: TObject);var  s: string;  lhttp: TIDhttp;begin  lhttp := TIDhttp.Create(nil);  try    lhttp.IOHandler := TIDSSliOHandlerSocketopenSSL.Create(lhttp);    lhttp.HandleRedirects := True;    s := lhttp.Get('https://esta.cbp.dhs.gov/esta/');    RichEdit1.Text := s;  finally    lhttp.Free;  end;end;

问题可能是您需要部署的DLL的版本.由于最近的版本修复了安全问题,我建议将您的Indy版本升级到最新版本并使用fulgan网站上最新的OpenSSL库.

更新:您是说您无法使用网络浏览器查看网站,或者当您这样做时无法在http分析器中看到流量?正如Rob提到的,如果使用常规Web浏览器看不到该站点,那么问题可能不是您的应用程序.

总结

以上是内存溢出为你收集整理的Delphi:IdHTTP SSL不起作用.没错!全部内容,希望文章能够帮你解决Delphi:IdHTTP SSL不起作用.没错!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1277797.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存