Der HTTP/2-Client kann im blockierenden und nicht-blockierenden Modus arbeiten; intern arbeitet die Komponente in einem sekundären Thread, und Anfragen werden asynchron verarbeitet, aber Sie können eine Anfrage aufrufen und warten, bis diese Anfrage abgeschlossen ist.
Nachfolgend finden Sie ein Beispiel, wie ein Client eine HTML-Seite von einem HTTP/2-Server anfordern kann und wie es in beiden Modi funktionieren kann.
Rufen Sie die folgende URL ab: https://www.google.com und werden Sie benachrichtigt, wenn der Client die vollständige Antwort erhält. Nachdem Sie die Methode GETASYNC aufgerufen haben, wird der Prozess fortgesetzt, und das Ereignis OnHTTP2Response wird aufgerufen, wenn die Antwort empfangen wird.
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;
Rufen Sie die folgende URL ab: https://www.google.com und warten Sie, bis der Client die vollständige Antwort empfängt. Nachdem Sie die GET-Methode aufgerufen haben, wartet der Prozess, bis die Antwort empfangen wird oder das Time-out erreicht ist.
Sie können über die Eigenschaft Response des HTTP/2-Clients auf die rohen Antwortdaten zugreifen. Hier können Sie auf rohe Header, den Statusantwortcode, das Charset und mehr zugreifen.
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));