Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2024, 16:50   #1
j7771
Новичок
Джуниор
 
Регистрация: 12.03.2024
Сообщений: 1
По умолчанию IdHTTP.Get

Пытаюсь получить html код страницы https://www.pwdatabase.com
Выдаёт ошибку Error connecting with SSL.
error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version.

А с сайтом https://mail.ru всё работает.
Куда копать?
Код:

Код:
const
 // addr = 'https://mail.ru';
 addr = 'https://www.pwdatabase.com';

var
  Form1: TForm1;
  IdHTTP : TIdHTTP;
  Id_HandlerSocket : TIdSSLIOHandlerSocketOpenSSL;
  html:string;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   IdHTTP := TIdHTTP.Create(Nil);
   Id_HandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
   Id_HandlerSocket.SSLOptions.Method := sslvTLSv1_2;
   IdHTTP.IOHandler := Id_HandlerSocket;
   html := IdHTTP.Get(addr);
   memo1.Text := html;
end;
Delphi XE 11.3
j7771 вне форума Ответить с цитированием
Старый 12.03.2024, 23:19   #2
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

У вас сайт на протоколе TLS 1.3, в indy вроде-бы ещё не завезли, используйте что-то, что поддерживает его, например NetHTTPClient, synapse, и тп.
DIONISKA вне форума Ответить с цитированием
Старый 13.03.2024, 16:40   #3
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

получал HTML-код страницы своего города (Печора - city/legacy/3970) с сайта GISMETEO и выискивал на ней температуру. в общем, делал информер. Может, что-то возмёшь для работы. Если короче - искал нужные цифры в коде.
Код:
program GisMeteo;
{$R dialog.res}

function SetTimer(hWnd:LongWord;nIDEvent,uElapse:LongWord;lpTimerFunc:Pointer):LongWord;stdcall;external 'user32.dll' name 'SetTimer';
function KillTimer(hWnd:LongWord;uIDEvent:LongWord):LongBool;stdcall;external 'user32.dll' name 'KillTimer';
function InternetOpen(lpszAgent:PAnsiChar;dwAccessType:LongWord;lpszProxy,lpszProxyBypass:PAnsiChar;dwFlags:LongWord):Pointer;stdcall;external 'wininet.dll' name 'InternetOpenA';
function InternetConnect(hInet:Pointer;lpszServerName:PChar;nServerPort:Word;lpszUsername:PChar;lpszPassword:PChar;dwService:LongWord;dwFlags:LongWord;dwContext:LongWord):Pointer;stdcall;external 'wininet.dll' name 'InternetConnectA';
function HttpOpenRequest(hConnect:Pointer;lpszVerb:PChar;lpszObjectName:PChar;lpszVersion:PChar;lpszReferrer:PChar;lplpszAcceptTypes:PAnsiChar;dwFlags:LongWord;dwContext:LongWord):Pointer;stdcall;external 'wininet.dll' name 'HttpOpenRequestA';
function HttpSendRequest(hRequest:Pointer;lpszHeaders:PChar;dwHeadersLength:LongWord;lpOptional:Pointer;dwOptionalLength:LongWord):LongBool;stdcall;external 'wininet.dll' name 'HttpSendRequestA';
function HttpQueryInfo(hRequest:Pointer;dwInfoLevel:LongWord;lpvBuffer:Pointer;var lpdwBufferLength:LongWord;var lpdwReserved:LongWord):LongBool;stdcall;external 'wininet.dll' name 'HttpQueryInfoA';
function InternetReadFile(hFile:Pointer;lpBuffer:Pointer;dwNumberOfBytesToRead:LongWord;var lpdwNumberOfBytesRead:LongWord):LongBool;stdcall;external 'wininet.dll' name 'InternetReadFile';
function InternetCloseHandle(hInet:Pointer):LongBool;stdcall;external 'wininet.dll' name 'InternetCloseHandle';
procedure PostQuitMessage(nExitCode:Integer);stdcall;external 'user32.dll' name 'PostQuitMessage';
function SendMessage(hWnd:LongWord;Msg:LongWord;wParam:LongInt;lParam:LongInt):LongInt;stdcall;external 'user32.dll' name 'SendMessageA';
function SetWindowText(hWnd:LongWord;lpString:PAnsiChar):LongBool;stdcall;external 'user32.dll' name 'SetWindowTextA';
function DialogBoxParam(hInstance:LongWord;lpTemplateName:PChar;hWndParent:LongWord;lpDialogFunc:Pointer;dwInitParam:LongInt):Integer;stdcall;external 'user32.dll' name 'DialogBoxParamA';
function DialogBox(hInstance:LongWord;lpTemplate:PChar;hWndParent:LongWord;lpDialogFunc:Pointer):Integer;
begin
   Result:=DialogBoxParam(hInstance,lpTemplate,hWndParent,lpDialogFunc,0);
end;
//----- глобальные константы и переменные --------------------------------------
var Handle:LongWord;
    hInet,hCon,hReq:Pointer;
    Status,StatusSize,Index:LongWord;
    bytes,b,ps:Cardinal;
    a,c:Byte;
    tst,rst:string;

//----- функция обработки сообщений --------------------------------------------
function DlgProc(wnd:LongWord;msg:integer;wparam:LongInt;lparam:LongInt):LongInt;stdcall;
begin
   case msg of
   3: SendMessage(wnd,$0112,61472,0);
   $0110:
   begin
      SetTimer(wnd,1,60000,nil);
   end;
   $0113:
   begin
      //SetWindowText(wnd,'загрузка');
      bytes:=1;
      hInet:=InternetOpen('My Agent',0,nil,nil,0);
      hCon:=InternetConnect(hInet,'gismeteo.ru',80,nil,nil,3,0,0);
      hReq:=HttpOpenRequest(hCon,'GET','city/legacy/3970','HTTP/1.0',nil,nil,$00400000 or $80000000,0);
      HttpSendRequest(hReq,'',0,nil,0);
      StatusSize:=SizeOf(Status);
      Index:=0;
      HttpQueryInfo(hReq,$20000000 or 19,@Status,StatusSize,Index);
      ps:=1;
      b:=1;
      rst:='';
      while(b>0)do
      begin
         SetLength(rst,Cardinal(Length(rst))+bytes);
         InternetReadFile(hReq,@rst[Ps],bytes,b);
         Inc(Ps,b);
      end;
      InternetCloseHandle(hReq);
      InternetCloseHandle(hCon);
      InternetCloseHandle(hInet);
      tst:='';
      Delete(rst,1,Pos('MG.Media.ad_top.start',rst)-1);
      Delete(rst,Pos('new adfox',rst),Length(rst)-Pos('new adfox',rst));
      a:=1;
      c:=0;
      while(a=1)do//and(c<8)do
      begin
         if(Pos('data-air=',rst)=0)then a:=0;
         if(Pos('data-air=',rst)<>0)then
         begin
            inc(c);
            Delete(rst,1,Pos('data-air=',rst)+Length('data-air='));
            if(c mod 2=1)then tst:=tst+Copy(rst,1,Pos('"',rst)-1)+#176+#32;
         end;
      end;
      Delete(tst,Length(tst),1);
      SetWindowText(wnd,PChar(tst));
   end;
   $0002,$0010:
   begin
      KillTimer(Handle,1);
      PostQuitMessage(0);
      Result:=0;
      Exit;
   end;
   end;
   Result:=0;
end;

begin
   DialogBox(hInstance,'MAIN_WINDOW',0,@DlgProc);
end.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IdHTTP+IdSSLIOHandlerSocket проблема с IdHTTP.Get DC-AC Работа с сетью в Delphi 4 20.02.2020 19:08
IdHTTP Alex711 Работа с сетью в Delphi 1 11.10.2018 14:36
idHTTP Edward Работа с сетью в Delphi 14 04.09.2009 00:33
IDHTTP Edward Компоненты Delphi 1 17.08.2009 20:20
idHTTP DeDoK Общие вопросы Delphi 5 05.06.2008 22:45