HTTP/2 Client kan werken in blokkerende en niet-blokkerende modus. Intern werkt de component in een secundaire thread en worden verzoeken asynchroon verwerkt, maar u kunt een verzoek doen en wachten totdat het is voltooid.
Hieronder vindt u een voorbeeld van hoe een client een HTML-pagina kan opvragen bij een HTTP/2-server en hoe deze in beide modi kan werken.
Haal de volgende URL op: https://www.google.com en ontvang een melding wanneer de client de volledige respons ontvangt. Nadat u de methode GETASYNC aanroept, gaat het proces verder en wordt de gebeurtenis OnHTTP2Response aangeroepen wanneer de respons is ontvangen.
oClient := TsgcHTTP2Client.Create(nil);
oClient.OnHTTP2Response := OnHTTP2ResponseEvent;
oClient.GetAsync('https://www.gooogle.com');
procedure OnHTTP2ResponseEvent(Sender: TObject; const Connection: TsgcHTTP2ConnectionClient;
const Request: TsgcHTTP2RequestProperty; const Response: TsgcHTTP2ResponseProperty);
begin
ShowMessage(Response.Headers.Text + #13#10 + Response.DataString);
end;
Haal de volgende URL op: https://www.google.com en wacht totdat de client de volledige respons ontvangt. Nadat u de methode GET aanroept, wacht het proces totdat een respons is ontvangen of de time-out is bereikt.
U kunt toegang krijgen tot de ruwe responsgegevens via de eigenschap Response van de HTTP/2-client. Hier kunt u toegang krijgen tot ruwe headers, statusresponsecode, tekenset en meer.
oClient := TsgcHTTP2Client.Create(nil);
vResponse := oClient.Get('https://www.gooogle.com');
if oClient.Response.Status = 200 then
ShowMessage('Response from server: ' + vResponse)
else
ShowMessage('Response Code: ' + IntToStr(oClient.Response.Status));