无法加载SSL库

我正在尝试使用REST。因此,我正在使用TIdHTTP组件。但这是行不通的。它说“无法加载SSL库”。我已经从该论坛上阅读了有关此错误的信息,但仍然无法正常工作。

我想念什么?我对SSL的了解为零。

我正在使用Delphi 2007,Indy 10.1.5和Windows 32位。

我将libeay32.dllssleay32.dll放在EXE目录中(我在https://indy.fulgan.com/SSL/openssl-1.0.2t-i386-win32.rar文件中找到了这些DLL文件)。

type
  TForm1 = class(TForm)
  IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
  ...

procedure TForm1.btn_ReqCheckServerClick(Sender: TObject);
var
  s: string;
  lHTTP: TIdHTTP;
const
  URL_CHECK_SERVER = 'http://example';  // some URL site to ping
begin
  lHTTP := TIdHTTP.Create(nil);
  try
    lHTTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:=sslvTLSv1;
    lHTTP.ProtocolVersion:=pv1_1;
    lHTTP.Request.ContentType := 'application/json';
    lHTTP.HandleRedirects := True;
    s := lHTTP.Get(URL_CHECK_SERVER);
    ShowMessage(s);
  finally
    lHTTP.Free;
  end;
end;
cy612 回答:无法加载SSL库

  

有人知道可以从哪里下载Indy的最新版本吗?在https://www.indyproject.org,许多链接断开了。

Indy的SVN信息库已淘汰。位于https://github.com/IndySockets/Indy的Indy的GitHub存储库现已成为活动存储库。 Fulgan最近关闭了Indy的SVN与GitHub存储库之间的同步。

Fulgan在https://indy.fulgan.com/ZIP/上每晚的zip文件不再是Indy的最新开发快照(自从上一次Fulgan从SVN提取快照以来,已经有一些签到GitHub了)。由于用户可以从GitHub提取Indy源代码的zip文件,因此它变得多余了。

Indy还将很快为其OpenSSL lib二进制文件建立一个新的GitHub存储库,这将成为Indy的Fulgan镜子棺材中的最后钉子。

Indy的网站https://www.indyproject.org尚未更新,以反映此新信息。尽管下载快照中有指向开发人员快照的GitHub存储库的链接。

您可以转到GitHub存储库并获取/Lib文件夹。最少需要/Lib/Core/Lib/Protocols/Lib/System文件夹来编译Indy。

  

我正在尝试使用REST。所以我正在使用TIdHTTP组件。但这是行不通的。它说“无法加载SSL库”。我已经从该论坛上阅读了有关此错误的信息,但仍然无法正常工作。

您可以在WhichFailedToLoad()单元中使用Indy的IdSSLOpenSSLHeaders函数来查找为什么Indy无法加载OpenSSL的原因。 DLL无法加载到内存中,或者DLL缺少Indy所需的导出。

但是请注意,10.1.5是Indy的一个非常旧的版本,最新版本是10.6.2。自从10.1.5发布以来,多年来10.1.5根本无法处理对OpenSSL所做的更改。例如,取消对SSLv2和SSLv3的支持可能是导致Indy旧版本无法加载较新的OpenSSL DLL的罪魁祸首。

,

我正在使用:

  • Delphi 2007(软件包版本110)。
  • Windows 7。

将旧Indy版本(Indy 10.1.5)升级到相对新的Indy版本(Indy 10.6.2.5516)。

我尝试过的步骤:

  • 组件|安装软件包... |设计包
  • 指向Indy 10 Core Design Time,然后单击“删除”按钮
  • 指向Indy 10协议设计时间,然后单击“删除”按钮
  • 删除所有引用旧Indy版本的库路径
    (工具|选项|环境选项| Delphi选项|库-Win32)
  • 在PC上删除所有IndySystem110。* IndyCore110。*和IndyProtocols110。*。
  • 在IDE中打开各个DPK文件,然后按以下顺序编译它们:
    • IndySystem110.dpk(在Lib \ System中)仅编译。
    • IndyCore110.dpk(在Lib \ Core中)仅编译。
    • IndyProtocols110.dpk(在Lib \ Protocols中)仅编译。
    • dclIndyCore110.dpk(在Lib \ Core中),编译然后安装。
    • dclIndyProtocols110.dpk(在Lib \ Protocols中),编译然后安装。
  • 将Lib \ System,Lib \ Core和Lib \ Protocols添加到Delphi库路径。 (工具|选项|环境选项| Delphi选项|库-Win32)

然后将修改日期为 2015/11/13 7:55 libeay32.dll ssleay32.dll 都放入我的可执行文件中文件夹位置。可行!

本文链接:https://www.f2er.com/3016371.html

大家都在问