Le client HTTP/2 peut fonctionner en mode bloquant et non bloquant ; en interne, le composant fonctionne dans un thread secondaire et les requêtes sont traitées de manière asynchrone, mais vous pouvez effectuer une requête et attendre qu'elle soit terminée.
Retrouvez ci-dessous un exemple de la façon dont le client peut demander une page HTML à un serveur HTTP/2 et comment il peut fonctionner dans les deux modes.
Accédez à l'URL suivante : https://www.google.com et soyez notifié lorsque le client reçoit la réponse complète. Après avoir appelé la méthode GETASYNC, le processus continue et l'événement OnHTTP2Response est déclenché à la réception de la réponse.
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;
Obtenez l'URL suivante : https://www.google.com et attendez que le client reçoive la réponse complète. Après avoir appelé la méthode GET, le processus attend que la réponse soit reçue ou que le délai d'attente soit atteint.
Vous pouvez accéder aux données de réponse brute en utilisant la propriété Response du client HTTP/2. Ici vous pouvez accéder aux en-têtes bruts, au code d'état de la réponse, au jeu de caractères et plus encore.
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));