Я пытаюсь POST к веб-службе https с Delphi 7. Первоначально ошибка была «Невозможно загрузить библиотеку SSL». Поэтому поместил ssleay32.dll и libeay32.dll (из indy_openssl096k.zip в https://indy.fulgan.com/SSL/Archive/) в папку, содержащую мой исполняемый файл.
Теперь ошибка «Ошибка подключения к SSL». В исключении я также использовал функцию WhichFailedToLoad (), и ниже также сообщается: «Не удалось загрузить: EVP_md5 X509_digest X509_NAME_ha sh»
На разных сайтах, как я понял, вышеуказанные функции являются частью libeay32.dll. , Но почему это все еще сообщается как FailedToLoad?
Я видел предложения, что обновление до Indy10 может решить эту проблему. Но приложения, над которыми я работаю, используют функции Indy на большом количестве модулей, и я не хочу вызывать никаких проблем, если обновление Indy завершится неудачно. Есть ли в любом случае, чтобы решить эту ошибку с Indy9. Любая помощь очень ценится.
Я пытался найти решение в течение последних нескольких дней и не могу найти его. Может ли кто-нибудь любезно помочь мне, пожалуйста?
Мой код
Protocol := TIdHTTP.Create(nil);
try
jsonToSend := TStringList.create;
Id_HandlerSocket := TIdSSLIOHandlerSocket.create(nil);
Id_HandlerSocket.SSLOptions.Method := sslvTLSv1;
Id_HandlerSocket.SSLOptions.Mode := sslmClient;
Id_HandlerSocket.SSLOptions.VerifyMode := [];
Id_HandlerSocket.SSLOptions.VerifyDepth := 0;
try
jsonToSend.Add('{"Branch":"' + branch + '", "Country":"' + country + '"}');
Protocol.IOHandler := Id_HandlerSocket;
Protocol.Request.ContentType := 'application/json';
Protocol.Request.Accept := '*/*';
Protocol.Post(ServerURL,jsonToSend);
except
on E:EIdOSSLConnectError do
begin
showmessage(E.Message);
showmessage('Failed to Load: ' + IdSSLOpenSSLHeaders.WhichFailedToLoad);
end;
end;
finally
Protocol.Destroy;
Id_HandlerSocket.Free;
jsonToSend.Destroy;
end;