我正在尝试从 URL 开始加载 TImage
,如 this answer 中所述。 .
uses
GIFImg;
procedure TForm1.Button1Click(Sender: TObject);
var
Stream : TMemoryStream;
GIF : TGIFImage;
begin
Stream := TMemoryStream.Create;
GIF := TGIFImage.Create;
try
IdHTTP1.Get('http://www.google.com/intl/en_ALL/images/logo.gif', Stream);
//IdHTTP1.Get('https://www.google.com/intl/en_ALL/images/logo.gif', Stream);
Stream.Position := 0;
GIF.LoadFromStream(Stream);
Image1.Picture.Assign(GIF);
finally
FreeAndNil(GIF);
FreeAndNil(Stream);
end;
end;
如果 URL 以简单的 HTTP 开头,一切正常。
当我尝试从 HTTPS URL 加载时,我收到一个 EIdIOHandlerPropInvalid
异常消息:
IOHandler value is not valid.
我已经尝试为 TIdHTTP
组件添加一个 TIdSSLIOHandlerSocketOpenSSL
并将其设置为 IOHandler
。
这样做之后,我得到一个 EIdOSSLCouldNotLoadSSLLibrary
异常,并显示以下消息:
Could not load SSL library.
是属性有问题还是其他什么问题?
最佳答案
您需要将 SSL 库(两个 .DLL 文件)安装在您的 Windows 中,或者与您的应用程序一起分发。
似乎可以在这里下载:
https://slproweb.com/products/Win32OpenSSL.html
或者通过他们的官方网站(但我在那里找不到可下载的二进制文件 - 只有源代码):
https://www.openssl.org/source/
可在此处下载用于 Indy 的预编译 .DLL:
https://indy.fulgan.com/SSL/ (谢谢,Zed)
关于delphi - 如何在 Delphi 中从 HTTPS URL 获取图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57972439/