QuickStart
Eén HTTP/3-verzoek
Maak de client aan, koppel drie gebeurtenissen en roep Get aan. Het antwoord komt terug als string en de statuscode komt binnen op OnResponse.
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 en Delete hebben dezelfde vorm en elk heeft een stream-overload voor een body die je niet in een string wilt bewaren. Connect(const aHost: string; aPort: Integer = 443) opent de verbinding vóór het eerste verzoek als je die twee wilt scheiden.
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;
Het lezen van FClient.Host en FClient.Port binnen OnConnect is precies waarvoor die twee eigenschappen dienen. Ze rapporteren de verbinding, ze configureren die niet.
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;
Voer dit eerst eenmalig uit, voor al het andere. Als beide false melden, heeft de OpenSSL naast je uitvoerbare bestand geen QUIC en is elke verbindingsfout daarna een gevolg van dit ene feit en niet van het netwerk.