Показать сообщение отдельно
  #3  
Старый 03.11.2023, 00:26
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. DLL надо класть рядом с EXE.
2. Вот такой код на Delphi XE3 работает с github:
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  url = 'https://github.com/';
var
  IdHTTP : TIdHTTP;
  IdSSLIOHandlerSocketOpenSSL : TIdSSLIOHandlerSocketOpenSSL;
  Response : String;
begin
  IdHTTP:=TIdHTTP.Create(nil);
  IdSSLIOHandlerSocketOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
  Try
    IdHTTP.Request.BasicAuthentication := false;
    IdHTTP.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';

    IdSSLIOHandlerSocketOpenSSL.SSLOptions.Mode := sslmClient;
    IdSSLIOHandlerSocketOpenSSL.SSLOptions.Method := sslvTLSv1;//sslvSSLv2;
    IdSSLIOHandlerSocketOpenSSL.SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];

    IdHTTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL;

    response:=IdHTTP.Get(url);

    memo1.Lines.add(response);
  Finally
    IdSSLIOHandlerSocketOpenSSL.Free;
    IdHTTP.Free;
  End;
end;
3. Этот код работает с версией OpenSSL 1.0.2u (скачать здесь: https://github.com/IndySockets/OpenS...es/tree/master)
4. На некоторых сайтах не работает. Либо надо подбирать рабочую комбинацию Method и SSLVersion, либо вообще надо более позднюю версию OpenSSL для поддержки TLS v1.3, но текущая версия Indy такие не поддерживает, т.к. там поменялся API, тогда надо искать и ставить другую версию самой Indy и я не уверен, что такая вообще существует в стабильном варианте.

Вот как-то так.
Ответить с цитированием