QuickStart
Tek bir HTTP/3 isteği
İstemciyi oluşturun, üç olayı bağlayın, Get çağırın. Yanıt bir dize olarak döner ve durum kodu OnResponse üzerinde gelir.
uses
Classes, SysUtils,
sgcQUIC, sgcHTTP3_Classes;
procedure TfrmHTTP3Client.FormCreate(Sender: TObject);
begin
FClient := TsgcHTTP3Client.Create(nil);
FClient.OnConnect := OnH3Connect;
FClient.OnError := OnH3Error;
FClient.OnResponse := OnH3Response;
FClient.TLSOptions.VerifyCertificate := True;
FClient.ConnectTimeout := 10000;
FClient.ReadTimeout := 30000;
FClient.UserAgent := 'sgcWebSockets/HTTP3Client';
end;
procedure TfrmHTTP3Client.btnGetClick(Sender: TObject);
var
vResult: string;
begin
try
vResult := FClient.Get('https://www.google.com/');
memoBody.Lines.Text := vResult;
DoLog('Response received: ' + IntToStr(Length(vResult)) + ' bytes');
except
on E: Exception do
DoLog('Error: ' + E.Message);
end;
end;
Post, Put ve Delete aynı biçimi alır ve her birinin, bir dizede tutmak istemediğiniz bir gövde için akış aşırı yüklemesi vardır. Connect(const aHost: string; aPort: Integer = 443), ikisini ayırmak istediğinizde bağlantıyı ilk istekten önce açar.
procedure TfrmHTTP3Client.OnH3Connect(Sender: TObject);
begin
DoLog('Connected to ' + FClient.Host + ':' + IntToStr(FClient.Port));
end;
procedure TfrmHTTP3Client.OnH3Error(Sender: TObject; const aError: string);
begin
DoLog('Error: ' + aError);
end;
procedure TfrmHTTP3Client.OnH3Response(Sender: TObject;
const aResponse: TsgcHTTP3Response);
begin
DoLog('Status: ' + IntToStr(aResponse.StatusCode));
memoHeaders.Lines.Assign(aResponse.Headers);
end;
OnConnect içinde FClient.Host ve FClient.Port değerlerini okumak, bu iki özelliğin tam olarak ne için olduğudur. Bağlantıyı bildirirler, yapılandırmazlar.
uses
Classes, SysUtils,
sgcIdSSLOpenSSLHeaders;
procedure TfrmQUICClient.FormCreate(Sender: TObject);
begin
DoLog('OpenSSL QUIC Support:');
DoLog(' quictls API: ' +
BoolToStr(IsOpenSSL_QUIC_TLS_Available, True));
DoLog(' Builtin QUIC (3.2+): ' +
BoolToStr(IsOpenSSL_QUIC_Available, True));
end;
Bunu her şeyden önce bir kez çalıştırın. İkisi de false bildirirse, çalıştırılabilir dosyanızın yanındaki OpenSSL'de QUIC yoktur ve bundan sonraki her bağlantı hatası ağın değil bu tek gerçeğin belirtisidir.
İlk iki sekme, form denetimleri sabit değerlerle değiştirilmiş olarak paketle gelen Demos\22.QUIC_Protocol\03.HTTP3_Client\FHTTP3Client.pas demosundan alınmıştır. Üçüncüsü 01.QUIC_Client\FQUICClient.pas içindeki çalışma zamanı kullanılabilirlik denetimidir. Bu klasörde bir WebTransport çifti dahil altı QUIC demosu vardır.