TIDHTTP: не удалось загрузить библиотеку SSL по URL-адресам, отличным от https - PullRequest
0 голосов
/ 06 декабря 2018

Я использую TIDHTTP для загрузки zip-файла с URL-адреса, отличного от https, как показано ниже:

IdHTTPProgress.DownloadFile('http://www.myurl.com/myfile.zip','c:\myfile.zip');

Тем не менее я получаю исключение «Не удалось загрузить библиотеку SSL».Исключение происходит, но после этого загрузка все равно производится.

Как мне избежать этого исключения?

Спасибо

1 Ответ

0 голосов
/ 06 декабря 2018

Единственный способ, которым может возникнуть исключение, - это когда:

  • вы присвоили TIdSSLIOHandlerSocketOpenSSL компонент для свойства TIdHTTP.IOHandler.

    Он попытаетсяинициализируйте OpenSSL, даже если вы делаете HTTP-запрос, поскольку существует вероятность того, что любой HTTP-запрос будет перенаправлен на HTTPS, поэтому Indy подготавливает OpenSSL при установке TCP-соединения, на всякий случай.

  • вы не развернули DLL-библиотеки OpenSSL (libeay32.dll и ssleay32.dll или эквивалентную для вашей целевой платформы) с вашим приложением - ИЛИ - вы развернули неверную версию DLL, которые не совместимы сваша версия Indy.

    Если вы собираетесь использовать TIdSSLIOHandlerSocketOpenSSL, вам нужны соответствующие DLL.Indy в настоящее время поддерживает до OpenSSL 1.0.2, но не OpenSSL 1.1.0 или новее (пока - то есть в списке TODO ).

Когда повышается IndyИсключение «Не удалось загрузить библиотеку SSL», затем вы можете вызвать функцию Indy WhichFailedToLoad() в блоке IdSSLOpenSSLHeaders, чтобы выяснить, произошел ли сбой из-за того, что DLL не удалось загрузить в память, или потому что в DLL отсутствуют экспорты, которые IndyТребуется.

В модуле IdSSLOpenSSL также есть функция OpenSSLVersion(), чтобы сообщать, какая версия OpenSSL была загружена в память.

В вашем случае перенаправление с HTTP на HTTPS отсутствует.случается, но ошибка все еще происходит внутри, которая TIdHTTP глотает, поскольку HTTPS не используется.Ваш код не увидит исключение во время выполнения.Но ваш отладчик будет.

...