2016-02-09 1 views
6

В моем приложении я использую IdHTTP.Get. Часть кода:Indy 10 - IdHTTP.Получить сборку «Не удалось загрузить библиотеку SSL»

var 
    IdHTTP: TIdHTTP; 
begin 
    IdHTTP := TIdHTTP.Create(nil); 
    Output := IdHTTP.Get(url); 
    ... 
    IdHTTP.Free; 

Использование IdHTTP.Version дает мне версию: 10.6.2.5263

Я скачал OpenSSL из here, как libeay32.dll и ssleay32.dll находятся в той же папке, моей заявки.

Эта проблема возникла, так как я использую новый ноутбук с Windows 10. Надеюсь, кто-то может сказать мне, как решить эту проблему!

+3

Используйте функцию 'WhatFailedToLoad()' Indy в модуле 'IdSSLOpenSSLHeaders', чтобы узнать, какую DLL не удалось загрузить. – whosrdaddy

+1

Проверьте настройки брандмауэра для (исходящего от приложения) блока исходящих подключений – mjn

+1

@whosrdaddy спасибо, похоже, что только libeay32.dll не удалось загрузить – Teun

ответ

2

Если вам нужно получить доступ к URL-адресу https, вы должны добавить код, чтобы завершить создание компонента TidHTTP.

использование попробовать что-то вроде этого:

// create components 
HTTPs := Tidhttp.Create(nil); 
IdSSL := TIdSSLIOHandlerSocket.Create(nil); 
// try..finally for free 
try 
    // ini 
    HTTPs.ReadTimeout := 30000; 
    HTTPs.IOHandler := IdSSL; 
    IdSSL.SSLOptions.Method := sslvTLSv1; 
    IdSSL.SSLOptions.Method := sslvTLSv1; 
    IdSSL.SSLOptions.Mode := sslmUnassigned; 
    ... 

Вам нужно добавить IdSSLOpenSSL к использует положение.

+1

Код, о котором я говорил, работал для меня в прошлом, и он по-прежнему работает на других компьютерах, которые я использую. Это только на моем новом ноутбуке. Поэтому я предполагаю, что код не проблема. – Teun

+2

См. Http://www.indyproject.org/sockets/blogs/ChangeLog/20141222.en.aspx, код создания IOHandler не требуется для простых случаев использования – mjn

Смежные вопросы