德尔福:idHttp + SSL德尔福:idHttp + SSL(Delphi: idHttp+SS

2019-05-12 04:50发布

解释我请了如何从服务器中使用SSL下载文件(https://开头)。 我还没有发现在互联网上一个合适的答案。

大家说,大约TIdSSLIOHandlerSocket,但我只有TIdSSLIOHandlerSocketOpenSSL。 我有一个错误“无法加载SSL库”如果我用TIdSSLIOHandlerSocketOpenSSL。 有人说,它需要一个库,但最即使不提这件事。 我是否需要使用库从这里http://www.indyproject.org/sockets/SSL.EN.aspx ?

我在程序的文件夹这些DLL。 据: http://edn.embarcadero.com/article/31279 “在运行时,印地尝试加载的libeay32.dll和ssleay32.dll。” 不知从哪里印尝试加载的DDL知道 - >我有一个错误:“无法加载SSL库”。

procedure TForm1.FormCreate(Sender: TObject);
    var  UpdateMemoryStream:tmemorystream;
    begin
    try
    UpdateMemoryStream:=TMemoryStream.Create;
                try
                idhttp2.Get('https://example.com/list.rar',UpdateMemoryStream); //I have: Exception class EIdOSSLCouldNotLoadSSLLibrary with message 'Could not load SSL library.'
                except
                    on E : Exception do 
                    begin showmessage('Error: '+E.Message); 
                    end;
                end;
    UpdateMemoryStream.SaveToFile('d:\1.rar');
    finally
    UpdateMemoryStream.Free;
    end;
    end;

为什么我有这样的错误? 我有德尔福2010年。

Answer 1:

要使用Indy的OpenSSL的类,你需要ssleay32.dll的libeay32.dll。 这大概应该在你试图执行代码的Indy异常的来源一直是显而易见的。

该库是从问题中提到的印网页挂。 如果你在法律上允许这样做,你可以用你的应用程序分发。 把它们放到哪里去的DLL(通常是你的应用程序目录)。

TIdSSLIOHandlerSocketOpenSSL是抽象TIdSSLIOHandlerSocket类的特定OpenSSL的后裔。 如果你使用一些其他SSL库而不是OpenSSL的,你会使用不同的子类。



Answer 2:

从下载的OpenSSL 1.0.0d-i386- 的Win32 -rev2.zip,不是的OpenSSL 1.0.0d-x64_86- Win64的 -rev2.zip http://indy.fulgan.com/SSL/

读到这里太: https://forums.embarcadero.com/thread.jspa?threadID=15569



Answer 3:

一些被链接到M $工作室编译的,因此不会在德尔福工作,关键是要得到正确的DLL。 尝试https://indy.fulgan.com/SSL/最新版本是在页面的底部。



文章来源: Delphi: idHttp+SSL