【发布时间】:2011-10-04 17:12:36
【问题描述】:
请解释一下如何使用 SSL (https://) 从服务器下载文件。我在网上没有找到合适的答案。
每个人都说 TIdSSLIOHandlerSocket,但我只有 TIdSSLIOHandlerSocketOpenSSL。 如果我使用 TIdSSLIOHandlerSocketOpenSSL,我有一个错误“无法加载 SSL 库”。 有人说它需要一个图书馆,但大多数人甚至不提它。我需要使用http://www.indyproject.org/sockets/SSL.EN.aspx这里的库吗?
我在程序文件夹中有这些 DLL。根据: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;
为什么会出现这个错误? 我有 Delphi 2010。
【问题讨论】:
-
TIdSSLIOHandlerSocket是 Indy 9 中的类名。TIdSSLIOHandlerSocketOpenSSL是 Indy 10 中的新类名。