powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / HTTP_2.0
5 сообщений из 5, страница 1 из 1
HTTP_2.0
    #39617048
plus_stick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Кто-нибудь знает, как получить html сайта на протоколе http 2.0?
Обнаружил, что Indy не поддерживает 2.0. Где то услышал, NetHTTP может. Сделал так, без результата (AV):
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var
  h: TNetHTTPClient;
  r: TNetHTTPRequest;
begin
  h := TNetHTTPClient.Create(nil);
  r := TNetHTTPRequest.Create(nil);
  h.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36';
  r.Client := h;
  r.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8';
  r.AcceptEncoding := 'gzip, deflate, br';
  r.AcceptLanguage := 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7';
  r.URL := 'https://СайтНаHTTP2.com';
  r.MethodString := 'GET';
  Memo1.Text := r.Execute().ContentAsString();
end;

Интернет ничего не дал. Может есть у кого идеи? Спасибо.
...
Рейтинг: 0 / 0
HTTP_2.0
    #39617052
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plus_stickОбнаружил, что Indy не поддерживает 2.0.

Он же в исходниках идёт. В чём проблема посмотреть на код формирования запроса и
отрихтовать в нужную сторону?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
HTTP_2.0
    #39617081
plus_stick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашёл вот такой костыль в сети, заработало. Всем спасибо!
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
program Project1;

{$APPTYPE CONSOLE}

uses
  System.Classes, IdHTTP, IdSSL, IdSSLOpenSSL, IdSSLOpenSSLHeaders, IdCTypes;

type
  TCustomIdHTTP = class(TIdHTTP)
  public
    constructor Create(AOwner: TComponent);
  private
    procedure OnStatusInfoEx(ASender: TObject; const AsslSocket: PSSL; const AWhere, Aret: TIdC_INT; const AType, AMsg: String);
  end;

{ TCustomIdHTTP }

constructor TCustomIdHTTP.Create(AOwner: TComponent);
begin
  IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  with IOHandler as TIdSSLIOHandlerSocketOpenSSL do begin
    OnStatusInfoEx := Self.OnStatusInfoEx;
    SSLOptions.Method := sslvSSLv23;
    SSLOptions.SSLVersions := [sslvTLSv1_2, sslvTLSv1_1, sslvTLSv1];
  end;
  inherited Create(AOwner);
end;

procedure TCustomIdHTTP.OnStatusInfoEx(ASender: TObject; const AsslSocket: PSSL; const AWhere, Aret: TIdC_INT;
  const AType, AMsg: String);
begin
  SSL_set_tlsext_host_name(AsslSocket, Request.Host);
end;
//////////////////

var
  MyHTTP: TCustomIdHTTP;
begin
  MyHTTP := TCustomIdHTTP.Create(nil);
  Memo1.text := MyHTTP.Get('https://СайтНаHTTP2.com')
  MyHTTP.Free;
end.
...
Рейтинг: 0 / 0
HTTP_2.0
    #39617152
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plus_stick,

похоже что проблема у тебя была не в http2, он обратно совместим с http, а в установке tls-соединения
...
Рейтинг: 0 / 0
HTTP_2.0
    #39617317
plus_stick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений,

Верно. Достаточно было указать версию TLS:

Код: pascal
1.
2.
3.
  IdSSL := TIdSSLIOHandlerSocketOpenSSL.Create;
  IdSSL.SSLOptions.Method := sslvTLSv1_2;
  IdHTTP.IOHandler := IdSSL;


Благодарю за наводку!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / HTTP_2.0
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]