TsgcHTTP3Client

TsgcHTTP3Client è un client HTTP/3 (RFC 9114) che invia richieste HTTP su QUIC e supporta sia metodi di richiesta sincroni che asincroni.

Introduzione

TsgcHTTP3Client implementa un client HTTP/3 come definito in RFC 9114. HTTP/3 trasporta richieste e risposte HTTP tramite QUIC (un trasporto basato su UDP con TLS 1.3 integrato), quindi ogni richiesta viene inviata su una connessione crittografata e multiplexata senza head-of-line blocking. Il client è basato sul client QUIC nativo fornito da OpenSSL 3.5 o successivo, quindi non è richiesta alcuna libreria HTTP/3 esterna.

Il componente può inviare richieste in modo sincrono (la chiamata si blocca e restituisce il corpo della risposta) o asincrono (la chiamata ritorna immediatamente e la risposta viene consegnata sull'evento OnResponse).

Seguire i passaggi seguenti per inviare una richiesta sincrona:

1. Creare una nuova istanza di TsgcHTTP3Client e impostare Host e Port del server.

2. Chiamare Connect per aprire la connessione QUIC, inviare la richiesta con Get (che restituisce il corpo della risposta) e chiamare Disconnect al termine. esempio:


    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;

Per inviare la richiesta in modo asincrono, assegnare l'evento OnResponse e chiamare GetAsync; la chiamata ritorna immediatamente e la risposta viene consegnata sull'evento. esempio:


    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;

Riferimento

Proprietà principali

NomeDescrizione
HostIndirizzo IP o nome DNS del server HTTP/3 a cui il client si connetterà.
PortPorta UDP usata per connettersi al server HTTP/3 (QUIC).
ConnectTimeoutTempo massimo in millisecondi che il client attende per il completamento dell'handshake QUIC e TLS 1.3.
TLSOptionsConfigura i parametri TLS 1.3 (certificati, verifica, ALPN) utilizzati dalla connessione QUIC.
SettingsParametri SETTINGS di HTTP/3 annunciati al server quando la connessione viene stabilita.

Metodi principali

NomeDescrizione
ConnectApre la connessione QUIC ed esegue l'handshake TLS 1.3 e HTTP/3.
GetInvia una richiesta HTTP/3 GET sincrona e restituisce il corpo della risposta.
PostInvia una richiesta HTTP/3 POST sincrona con un payload nel corpo.
GetAsyncInvia una GET HTTP/3 non bloccante; la risposta arriva su OnResponse.
DisconnectChiude la connessione HTTP/3 (QUIC).

Eventi principali

NomeDescrizione
OnResponseSi attiva quando il client riceve la risposta completa (stato, intestazioni e corpo) dal server.
OnErrorSi attiva quando si verifica un errore di richiesta o di connessione.
OnConnectSi attiva dopo che la connessione HTTP/3 è stata stabilita.
OnDisconnectSi attiva dopo che la connessione HTTP/3 è stata chiusa.

Esempio completo

L'esempio seguente apre una connessione HTTP/3, invia una richiesta GET e una POST e chiude la connessione.


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;

Requisiti