TsgcHTTP3Client

TsgcHTTP3Client, QUIC üzerinden HTTP istekleri gönderen ve hem zaman uyumlu hem de zaman uyumsuz istek yöntemlerini destekleyen bir HTTP/3 istemcisidir (RFC 9114).

Giriş

TsgcHTTP3Client, RFC 9114'te tanımlandığı şekliyle bir HTTP/3 istemcisi uygular. HTTP/3, HTTP isteklerini ve yanıtlarını yerleşik TLS 1.3 ile UDP tabanlı bir taşıma olan QUIC üzerinden taşır; böylece her istek şifreli, çoğullanmış bir bağlantı üzerinden kuyruk başı engelleme olmaksızın gönderilir. İstemci, OpenSSL 3.5 veya üzeri tarafından sağlanan yerel QUIC istemcisi üzerine kuruludur; bu nedenle harici bir HTTP/3 kütüphanesi gerekmez.

Bileşen istekleri zaman uyumlu (çağrı bloke eder ve yanıt gövdesini döndürür) veya zaman uyumsuz (çağrı hemen döner ve yanıt OnResponse olayına iletilir) olarak gönderebilir.

Zaman uyumlu bir istek göndermek için aşağıdaki adımları izleyin:

1. TsgcHTTP3Client'in yeni bir örneğini oluşturun ve sunucunun Host ve Port'unu ayarlayın.

2. QUIC bağlantısını açmak için Connect'i çağırın, (yanıt gövdesini döndüren) Get ile isteği gönderin ve bittiğinde Disconnect'i çağırın. örnek:


    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;

İsteği zaman uyumsuz olarak göndermek için OnResponse olayını atayın ve GetAsync metodunu çağırın; çağrı hemen geri döner ve yanıt olay üzerinden iletilir. örnek:


    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;

Başvuru

Temel Özellikler

NameAçıklama
Hostİstemcinin bağlanacağı HTTP/3 sunucusunun IP adresi veya DNS adı.
PortHTTP/3 (QUIC) sunucusuna bağlanmak için kullanılan UDP portu.
ConnectTimeoutİstemcinin QUIC ve TLS 1.3 el sıkışmasının tamamlanması için beklediği maksimum süre (milisaniye cinsinden).
TLSOptionsQUIC bağlantısı tarafından kullanılan TLS 1.3 parametrelerini (sertifikalar, doğrulama, ALPN) yapılandırır.
SettingsBağlantı kurulduğunda SETTINGS çerçevesinde sunucuya duyurulan HTTP/3 ayarları.

Temel Yöntemler

NameAçıklama
ConnectQUIC bağlantısını açar ve TLS 1.3 ile HTTP/3 el sıkışmasını gerçekleştirir.
GetZaman uyumlu bir HTTP/3 GET isteği gönderir ve yanıt gövdesini döndürür.
PostGövde yükü ile zaman uyumlu bir HTTP/3 POST isteği gönderir.
GetAsyncEngellemesiz bir HTTP/3 GET gönderir; yanıt OnResponse üzerinden gelir.
DisconnectHTTP/3 (QUIC) bağlantısını kapatır.

Temel Olaylar

NameAçıklama
OnResponseİstemci sunucudan tam yanıtı (durum, başlıklar ve gövde) aldığında tetiklenir.
OnErrorBir istek veya bağlantı hatası oluştuğunda tetiklenir.
OnConnectHTTP/3 bağlantısı kurulduktan sonra tetiklenir.
OnDisconnectHTTP/3 bağlantısı kapatıldıktan sonra tetiklenir.

Tam Örnek

Aşağıdaki örnek bir HTTP/3 bağlantısı açar, bir GET ve bir POST isteği gönderir ve bağlantıyı kapatır.


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;

Gereksinimler