0

我无法弄清楚如何将图像从 URL 加载到 TImage 控件中。

总的来说,这是我需要做的

   TMemoryStream *str = new TMemoryStream;
   http->Get("http://myurl.mydomain.com/myimage.jpg", str);

问题似乎是 str 没有分配空间。我得到一个“无效的 IO 句柄错误”。

我无法事先找出图像的大小。

请问我该怎么做?我试图通过创建一个虚拟文件并将该文件加载到 TMemoryStream 中来为 TMemoryStream 分配 10MB 的空间,但这也会引发“Invalid IO Handler”错误。

在 RAD Studio XE7 上使用 C++ Builder 开发 iOS 和 Android 应用程序。

非常感谢

艾尔

4

1 回答 1

0

问题不在于您显示的代码。 TMemoryStream随着数据的写入而动态增长,TIdHTTP::Get()并将写入服务器实际发送的任何数据。您显示的代码语法很好。

如果您从 中收到“IOHandler 值无效”错误Get(),则表示正在请求HTTPSTIdSSLIOHandlerSocketBase url,但未将派生组件(例如TIdSSLIOHandlerSocketOpenSSL)分配给该TIdHTTP::IOHandler属性以处理 SSL/TLS 加密。您的代码正在请求HTTP url,因此服务器可能会发送重定向响应来告诉TIdHTTP请求HTTPS url(检查TIdHTTP::OnRedirect事件以验证)。您需要分配一个 SSL IOHandler 才能处理 HTTPS url。

于 2016-03-21T19:14:58.563 回答