请解释一下如何使用 SSL (https://) 从服务器下载文件。我在互联网上没有找到合适的答案。
每个人都说 TIdSSLIOHandlerSocket,但我只有 TIdSSLIOHandlerSocketOpenSSL。
如果我使用 TIdSSLIOHandlerSocketOpenSSL,则会出现错误“无法加载 SSL 库”。
有人说它需要一个图书馆,但大多数人甚至没有提到它。我需要使用这里的库吗http://www.indyproject.org/sockets/SSL.EN.aspx http://www.indyproject.org/sockets/SSL.EN.aspx ?
我的程序文件夹中有这些 DLL。根据:http://edn.embarcadero.com/article/31279 http://edn.embarcadero.com/article/31279“在运行时,Indy 尝试加载 libeay32.dll 和 ssleay32.dll。”我不知道 Indy 尝试从哪里加载 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。
要使用 Indy 的 OpenSSL 类,您需要ssleay32.dll and libeay32.dll。从您尝试执行的 Indy 代码中的异常来源来看,这一点可能应该是显而易见的。
这些库是从问题中提到的 Indy 页面链接到的。如果法律允许您这样做,您可以将它们与您的应用程序一起分发。将它们放在 DLL 所在的任何位置(通常是您的应用程序目录)。
TIdSSLIOHandlerSocketOpenSSL 是抽象 TIdSSLIOHandlerSocket 类的特定于 OpenSSL 的后代。如果您使用其他 SSL 库而不是 OpenSSL,则您将使用不同的后代类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)