TsgcHTTP3Client

TsgcHTTP3Client to klient HTTP/3 (RFC 9114) wysyłający żądania HTTP przez protokół QUIC i obsługujący zarówno synchroniczne, jak i asynchroniczne metody żądań.

Wprowadzenie

TsgcHTTP3Client implementuje klienta HTTP/3 zgodnie z RFC 9114. HTTP/3 przesyła żądania i odpowiedzi HTTP przez QUIC (transport oparty na UDP z wbudowanym TLS 1.3), więc każde żądanie jest wysyłane przez szyfrowane, multipleksowane połączenie bez blokowania nagłówka kolejki. Klient jest zbudowany na natywnym kliencie QUIC dostarczanym przez OpenSSL 3.5 lub nowszy, więc nie jest wymagana żadna zewnętrzna biblioteka HTTP/3.

Komponent może wysyłać żądania synchronicznie (wywołanie blokuje i zwraca treść odpowiedzi) lub asynchronicznie (wywołanie wraca natychmiast, a odpowiedź jest dostarczana przez zdarzenie OnResponse).

Wykonaj poniższe kroki, aby wysłać żądanie synchroniczne:

1. Utwórz nową instancję TsgcHTTP3Client i ustaw Host oraz Port serwera.

2. Wywołaj Connect, aby otworzyć połączenie QUIC, wyślij żądanie przez Get (które zwraca treść odpowiedzi) i wywołaj Disconnect po zakończeniu. Przykład:


    oClient := TsgcHTTP3Client.Create(nil);
    oClient.Host := 'www.example.com';
    oClient.Port := 443;
    oClient.Connect(oClient.Host, oClient.Port);
    vResponse := oClient.Get('https://www.example.com/');
    ShowMessage(vResponse);
    oClient.Disconnect;

Aby wysłać żądanie asynchronicznie, przypisz zdarzenie OnResponse i wywołaj GetAsync; wywołanie wraca natychmiast, a odpowiedź jest dostarczana przez zdarzenie. przykład:


    oClient := TsgcHTTP3Client.Create(nil);
    oClient.OnResponse := OnResponseEvent;
    oClient.GetAsync('https://www.example.com/');

    procedure OnResponseEvent(Sender: TObject; const Response: TsgcHTTP3Response);
    begin
      ShowMessage(Response.DataString);
    end;

Dokumentacja

Kluczowe właściwości

NazwaOpis
HostAdres IP lub nazwa DNS serwera HTTP/3, z którym klient się połączy.
PortPort UDP używany do połączenia z serwerem HTTP/3 (QUIC).
ConnectTimeoutMaksymalny czas w milisekundach, jaki klient czeka na zakończenie uzgadniania QUIC i TLS 1.3.
TLSOptionsKonfiguruje parametry TLS 1.3 (certyfikaty, weryfikacja, ALPN) używane przez połączenie QUIC.
SettingsParametry SETTINGS HTTP/3 ogłaszane serwerowi podczas nawiązywania połączenia.

Kluczowe metody

NazwaOpis
ConnectOtwiera połączenie QUIC i wykonuje uzgadnianie TLS 1.3 oraz HTTP/3.
GetWysyła synchroniczne żądanie HTTP/3 GET i zwraca treść odpowiedzi.
PostWysyła synchroniczne żądanie HTTP/3 POST z ładunkiem treści.
GetAsyncWysyła nieblokujące żądanie HTTP/3 GET; odpowiedź dociera poprzez zdarzenie OnResponse.
DisconnectZamyka połączenie HTTP/3 (QUIC).

Kluczowe zdarzenia

NazwaOpis
OnResponseWywoływane, gdy klient otrzymuje pełną odpowiedź (status, nagłówki i treść) od serwera.
OnErrorUruchamiane, gdy wystąpi błąd żądania lub połączenia.
OnConnectUruchamiane po nawiązaniu połączenia HTTP/3.
OnDisconnectUruchamiane po zamknięciu połączenia HTTP/3.

Kompletny przykład

Poniższy przykład otwiera połączenie HTTP/3, wysyła żądania GET i POST, a następnie zamyka połączenie.


var
  oClient: TsgcHTTP3Client;
  vResponse: string;
begin
  oClient := TsgcHTTP3Client.Create(nil);
  try
    oClient.Host := 'www.example.com';
    oClient.Port := 443;
    oClient.ConnectTimeout := 10000;
    oClient.Connect(oClient.Host, oClient.Port);
    if oClient.Connected then
    begin
      vResponse := oClient.Get('https://www.example.com/');
      ShowMessage(vResponse);
      vResponse := oClient.Post('https://www.example.com/api', 'name=value',
        'application/x-www-form-urlencoded');
      ShowMessage(vResponse);
    end;
    oClient.Disconnect;
  finally
    oClient.Free;
  end;
end;

Wymagania