TsgcHTTP3Client

TsgcHTTP3Client est un client HTTP/3 (RFC 9114) qui envoie des requêtes HTTP via QUIC et prend en charge les méthodes de requête synchrones et asynchrones.

Introduction

TsgcHTTP3Client implémente un client HTTP/3 tel que défini dans RFC 9114. HTTP/3 transporte les requêtes et réponses HTTP via QUIC (un transport basé sur UDP avec TLS 1.3 intégré), de sorte que chaque requête est envoyée via une connexion chiffrée et multiplexée sans blocage de tête de ligne. Le client est basé sur le client QUIC natif fourni par OpenSSL 3.5 ou version ultérieure, aucune bibliothèque HTTP/3 externe n'est donc requise.

Le composant peut envoyer des requêtes de manière synchrone (l'appel bloque et retourne le corps de la réponse) ou de manière asynchrone (l'appel retourne immédiatement et la réponse est délivrée sur l'événement OnResponse).

Suivez les étapes ci-dessous pour envoyer une requête synchrone :

1. Créez une nouvelle instance de TsgcHTTP3Client et définissez l'Host et le Port du serveur.

2. Appelez Connect pour ouvrir la connexion QUIC, envoyez la requête avec Get (qui retourne le corps de la réponse) et appelez Disconnect une fois terminé. exemple :


    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;

Pour envoyer la requête de manière asynchrone, assignez l'événement OnResponse et appelez GetAsync ; l'appel retourne immédiatement et la réponse est transmise via l'événement. exemple :


    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;

Référence

Propriétés clés

NomDescription
HostAdresse IP ou nom DNS du serveur HTTP/3 auquel le client se connectera.
PortPort UDP utilisé pour se connecter au serveur HTTP/3 (QUIC).
ConnectTimeoutDurée maximale en millisecondes que le client attend pour que la négociation QUIC et TLS 1.3 se termine.
TLSOptionsConfigure les paramètres TLS 1.3 (certificats, vérification, ALPN) utilisés par la connexion QUIC.
SettingsParamètres SETTINGS HTTP/3 annoncés au serveur lors de l'établissement de la connexion.

Méthodes clés

NomDescription
ConnectOuvre la connexion QUIC et effectue la négociation TLS 1.3 et HTTP/3.
GetEnvoie une requête HTTP/3 GET synchrone et retourne le corps de la réponse.
PostEnvoie une requête HTTP/3 POST synchrone avec une charge utile dans le corps.
GetAsyncEnvoie un GET HTTP/3 non bloquant ; la réponse arrive sur OnResponse.
DisconnectFerme la connexion HTTP/3 (QUIC).

Événements clés

NomDescription
OnResponseSe déclenche lorsque le client reçoit la réponse complète (statut, en-têtes et corps) du serveur.
OnErrorSe déclenche lorsqu'une erreur de requête ou de connexion se produit.
OnConnectSe déclenche après l'établissement de la connexion HTTP/3.
OnDisconnectSe déclenche après la fermeture de la connexion HTTP/3.

Exemple complet

L'exemple suivant ouvre une connexion HTTP/3, envoie une requête GET et une requête POST, puis ferme la connexion.


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;

Prérequis