android — загрузка CI Builder TImage с URL

У меня проблемы с выяснением, как загрузить изображение с URL-адреса в элемент управления TImage.

В общем, это то, что мне нужно сделать

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

Кажется, проблема в том, что str не имеет выделенного для него пространства. И я получаю «Недопустимая ошибка дескриптора ввода-вывода».

Я не могу узнать размер изображения перед рукой.

Как мне это сделать, пожалуйста? Я попытался выделить 10 МБ пространства для TMemoryStream, создав фиктивный файл и загрузив этот файл в TMemoryStream, но это также выдает ошибку «Invalid IO Handler».

Использование C ++ Builder в RAD Studio XE7 для разработки приложений для iOS и Android.

большое спасибо

Айер

0

Решение

Проблема не в коде, который вы показали. TMemoryStream растет динамически, как данные записываются в него, и TIdHTTP::Get() будет записывать любые данные, которые сервер фактически отправляет. Синтаксис кода, который вы показали, в порядке.

Если вы получаете сообщение об ошибке «Значение IOHandler недопустимо» от Get()это означает HTTPS URL запрашивается, но TIdSSLIOHandlerSocketBaseкомпонент (например, TIdSSLIOHandlerSocketOpenSSL) не назначен TIdHTTP::IOHandler свойство для обработки шифрования SSL / TLS. Ваш код запрашивает HTTP URL, поэтому сервер, скорее всего, отправляет ответ перенаправления, чтобы сказать TIdHTTP запросить HTTPS вместо URL (проверьте TIdHTTP::OnRedirect событие для проверки). Вам нужно назначить SSL IOHandler для обработки URL-адресов HTTPS.

0

Другие решения


По вопросам рекламы [email protected]