TsgcHTTP3Client

TsgcHTTP3Client es un cliente HTTP/3 (RFC 9114) que envía solicitudes HTTP a través de QUIC y admite métodos de solicitud tanto síncronos como asíncronos.

Introducción

TsgcHTTP3Client implementa un cliente HTTP/3 tal como se define en RFC 9114. HTTP/3 transporta solicitudes y respuestas HTTP sobre QUIC (un transporte basado en UDP con TLS 1.3 integrado), por lo que cada solicitud se envía a través de una conexión cifrada y multiplexada sin bloqueo de cabeza de línea. El cliente está construido sobre el cliente QUIC nativo proporcionado por OpenSSL 3.5 o posterior, por lo que no se requiere ninguna biblioteca HTTP/3 externa.

El componente puede enviar solicitudes de forma síncrona (la llamada se bloquea y devuelve el cuerpo de la respuesta) o asíncrona (la llamada retorna de inmediato y la respuesta se entrega en el evento OnResponse).

Siga los pasos a continuación para enviar una solicitud síncrona:

1. Cree una nueva instancia de TsgcHTTP3Client y establezca el Host y el Port del servidor.

2. Llame a Connect para abrir la conexión QUIC, envíe la solicitud con Get (que devuelve el cuerpo de la respuesta) y llame a Disconnect cuando termine. ejemplo:


    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;

Para enviar la solicitud de forma asíncrona, asigne el evento OnResponse y llame a GetAsync; la llamada retorna inmediatamente y la respuesta se entrega en el evento. ejemplo:


    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;

Referencia

Propiedades clave

NombreDescripción
HostDirección IP o nombre DNS del servidor HTTP/3 al que se conectará el cliente.
PortPuerto UDP utilizado para conectarse al servidor HTTP/3 (QUIC).
ConnectTimeoutTiempo máximo en milisegundos que el cliente espera a que se complete el protocolo de enlace QUIC y TLS 1.3.
TLSOptionsConfigura los parámetros de TLS 1.3 (certificados, verificación, ALPN) utilizados por la conexión QUIC.
SettingsParámetros SETTINGS de HTTP/3 anunciados al servidor cuando se establece la conexión.

Métodos clave

NombreDescripción
ConnectAbre la conexión QUIC y realiza el protocolo de enlace TLS 1.3 y HTTP/3.
GetEnvía una solicitud HTTP/3 GET síncrona y devuelve el cuerpo de la respuesta.
PostEnvía una solicitud HTTP/3 POST síncrona con una carga útil en el cuerpo.
GetAsyncEnvía un GET HTTP/3 no bloqueante; la respuesta llega en OnResponse.
DisconnectCierra la conexión HTTP/3 (QUIC).

Eventos clave

NombreDescripción
OnResponseSe dispara cuando el cliente recibe la respuesta completa (estado, cabeceras y cuerpo) del servidor.
OnErrorSe activa cuando se produce un error de solicitud o de conexión.
OnConnectSe activa después de que se ha establecido la conexión HTTP/3.
OnDisconnectSe activa después de que la conexión HTTP/3 se ha cerrado.

Ejemplo completo

El siguiente ejemplo abre una conexión HTTP/3, envía una solicitud GET y una POST y cierra la conexión.


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;

Requisitos