Delphi: idHttp + SSL

Объясните мне, пожалуйста, как загрузить файл с сервера с помощью SSL (https: //). Я не нашел подходящего ответа в Интернете.

Все говорят о TIdSSLIOHandlerSocket, но у меня есть только TIdSSLIOHandlerSocketOpenSSL. У меня есть ошибка «не удалось загрузить библиотеку SSL», если я использую TIdSSLIOHandlerSocketOpenSSL. Некоторые говорят, что ему нужна библиотека, но даже не упоминают об этом. Нужно ли мне использовать библиотеки здесь 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.

Чтобы использовать class OpenSSL Indy, вам нужны ssleay32.dll и libeay32.dll . Вероятно, это должно было быть очевидно из источника исключения в коде Indy, который вы пытались выполнить.

Библиотеки связаны с страницей Indy, указанной в вопросе. Если вам разрешено юридическое действие, вы можете распространять их в своем приложении. Поместите их туда, куда идут DLL (обычно ваш каталог приложений).

TIdSSLIOHandlerSocketOpenSSL – это потомок абстрактного classа TIdSSLIOHandlerSocket, специфичный для OpenSSL. Если вы использовали другую библиотеку SSL вместо OpenSSL, вы бы использовали другой class потомков.

Загрузите openssl-1.0.0d-i386- win32 -rev2.zip, а не openssl-1.0.0d-x64_86- win64 -rev2.zip из http://indy.fulgan.com/SSL/

Читайте здесь: https://forums.embarcadero.com/thread.jspa?threadID=15569

Очень важно получить правильные DLL, поскольку некоторые из них скомпилированы со ссылками на M $ Studio и поэтому не работают в Delphi. Попробуйте https://indy.fulgan.com/SSL/. Последние версии находятся в нижней части страницы.

У меня была та же проблема, я использую Delphi 2010 для компиляции на 32-битной машине. Когда я использовал TIdHTTP для вызова только HTTP-адресов, все работало нормально как на 32b, так и на 64b.

Затем мне нужно было вызвать HTTPS-ссылки, я выполнил все инструкции, добавил этот код

  IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create(nil); IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1; 

И я положил 2 dlls в папку exe

«10 апреля 2011 г. 13:21 850543 openssl-0.9.8r-i386-win32-rev2.zip»


Теперь он отлично работает на 32-битной машине, но на 64-битной машине я получаю сообщение об ошибке «Ошибка сокета # 10060. Время ожидания соединения». через несколько секунд.

Я попробовал 64-разрядные DLL на всякий случай, они создают ошибку «Не удалось загрузить библиотеку SSL»

У кого-то была такая же проблема? Должен ли я опубликовать еще какой-нибудь код?

— Редактировать — 32-битная машина запускает Win7, 64-битная машина запускает Win8.

  • Как подключиться к защищенному сайту с использованием SSL в Java с файлом pkcs12?
  • Последствия безопасности отключения CURLOPT_SSL_VERIFYHOST (libcurl / openssl)
  • Как восстановить отсутствующий сертификат IIS Express SSL?
  • Не удалось установить доверительные отношения для безопасного канала SSL / TLS - SOAP
  • Как создать сервер HTTPS в Node.js?
  • Проблемы с использованием Maven и SSL за прокси-сервером
  • html5 Websocket с SSL
  • Как получить файл .pem из .key и .crt файлов?
  • Почему запросы Python игнорируют параметр проверки?
  • Подключитесь к Postgres через SSL, используя R
  • Почему некоторые веб-сайты отображают название компании рядом с URL-адресом?
  • Interesting Posts

    Grub2 не может загружать Windows 7 с ошибкой «недопустимая подпись»

    Каков самый элегантный способ проверить, истинны ли все значения в булевом массиве?

    Объясните вывод ICACLS.EXE, по очереди, по элементам

    Перенос виртуальных машин VirtualBox на другой компьютер

    как я могу дождаться, когда звуковой клип java завершит воспроизведение?

    In-app Purchase «готов к отправке», но я не позволю представить его

    Как присвоить значение heredoc переменной в Bash?

    Текст центра в div?

    Как настроить свойства конвертера для каждой строки данных?

    Несколько значений для одного свойства с переменными списками аргументов в Sass

    Вывод типа параметра шаблона c ++

    Как уменьшить задержку перед просмотром окон на панели задач Windows 7?

    Загрузка нескольких файлов одновременно?

    Должен квалифицировать выделение с помощью экземпляра типа GeoLocation

    Как предотвратить множественные переполнения тоста

    Давайте будем гением компьютера.