У меня есть настольное приложение Windows, разработанное в XE2, которое извлекает данные с удаленного сервера в формате JSON.Я использую Indy 10 для управления этим.
Приложение работало нормально, пока я не получил письмо от провайдера сервера:
"... единственный протокол для защиты связибудет TLS 1.2. Старые версии (TLS.1.0, TLS.1.1 или SSLv3) больше не будут работать. " Они советуют использовать TLS 1.2 или выше.
С тех пор у меня возникает следующая ошибка времени выполнения
Исключение из первого шанса при $ 7518845D.Класс исключения EIdOSSLUnderlyingCryptoError с сообщением «Ошибка соединения с SSL.Ошибка подключения по SSL.ошибка: 1408F10B: подпрограммы SSL: SSL3_GET_RECORD: неправильный номер версии '.
Я обнаружил, что ошибка вызывается, когда я вызываю FidHTTP.Post (FidHTTP является экземпляром TidHTTP).
Я исправил метод, который создает классы следующим образом:
constructor TMyClass.Create;
begin
FidHTTP := TidHTTP.Create(nil);
FidHTTP.HTTPOptions := FidHTTP.HTTPOptions - [hoForceEncodeParams];
FidHTTP.Intercept := TIdLogFile.Create(FidHTTP);
TIdLogFile(FidHTTP.Intercept).Filename := 'c:\'+s+'.log';
TIdLogFile(FidHTTP.Intercept).Active := true;
{$IFDEF VER230}
FIdSSL := TIdSSLIOHandlerSocketOpenSSL.Create;
FIdSSL.SSLOptions.Method:=sslvTLSv1; // I have added this line
{$ENDIF}
end;
, но теперь у меня есть другая ошибка:
Исключение первого шанса на сумму 7518845D.Класс исключения EIdSocketError с сообщением «Ошибка сокета # 10054 Сброс соединения по пиру.».
Я нашел это в Google, но нашел информацию только по FTP, что не соответствует моему случаю.
Что я делаю неправильно?Это потому, что у меня есть старая версия Indy без опции sslvTLSv1_2 или?