|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
|  | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  не могу решить ошибку "error connecting with ssl" Всем привет, уже несколько дней бьюсь с попытками получить ответ https запроса. Из доступных средств Delphi 2007 и Indy 9 и 10. Могу разве что библиотеки подгружать... В итоге сварганил такую штуку Код: uses
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, IdIOHandler, IdIOHandlerSocket, IdSSLOpenSSL;
var
  IdHTTP1: TIdHTTP;
  IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocketOpenSSL;
  response: WideString;
procedure TForm1.Button1Click(Sender: TObject);
begin
  IdHTTP1:=TIdHTTP.Create(nil);
  IdSSLIOHandlerSocket1:=TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP1);
  IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv2;
  IdHTTP1.IOHandler:=IdSSLIOHandlerSocket1;
  IdHTTP1.ProtocolVersion := pv1_1;
  IdHTTP1.Request.BasicAuthentication := false;
  IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
  response:=IdHTTP1.Get('https://github.com/');
  memo1.Lines.add(response);
end; | 
| 
			 
			#2  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 | 
| 
			 
			#3  
			
			
			
			
		 | |||
| 
 | |||
|   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;4. На некоторых сайтах не работает. Либо надо подбирать рабочую комбинацию Method и SSLVersion, либо вообще надо более позднюю версию OpenSSL для поддержки TLS v1.3, но текущая версия Indy такие не поддерживает, т.к. там поменялся API, тогда надо искать и ставить другую версию самой Indy и я не уверен, что такая вообще существует в стабильном варианте. Вот как-то так. | 
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
|  
_omega772_ (07.11.2023)
 | ||
| 
			 
			#4  
			
			
			
			
		 | |||
| 
 | |||
|  Не помогло... у меня этот код всё так же не работает   Сам код даже не весь работает на моих версиях библиотек https://cdn.discordapp.com/attachmen...61810a6b91 9& https://media.discordapp.net/attachm...630&height=105 если закомментировать строчку то ошибка будет такая же как и раньше. Ещё упоминали за директорий но я не совсем понял. В общем сделал ещё и скриншот с подключениями библиотек на всякий случай. Сами библиотеки никак не трогались, как есть из коробки (буквально взяты с лицензионного диска D2007), разве что путь к Indy9 слетал, по этому я его прописал заново. https://media.discordapp.net/attachm...554&height=435 | 
| 
			 
			#5  
			
			
			
			
		 | |||
| 
 | |||
|   А-а-а... так у тебя Indy 9. Ну тогда не будет работать. Indy 9 не поддерживает TSL, насколько я помню. Качай и ставь Indy 10. Кстати, я посмотрел, там даже есть патч, который дает поддержку TSL 3 с новыми библиотеками (это версии 1.2 и выше). ЗЫ. Да, перед установкой Indy 10 надо предыдущую версию полностью вычистить, включая bpl-и везде (воде при установке Дельфи их даже в системную папку пишет). Последний раз редактировалось lmikle, 03.11.2023 в 09:19. | 
| 
			 
			#6  
			
			
			
			
		 | |||
| 
 | |||
|   посмотри на последнем скрине там лежат и Indy 9 и Indy 10. Он из коробки поставил сразу обе. |