TsgcHTTP2Client | Solicitud de Método HTTP/2

El cliente HTTP/2 puede funcionar en modo bloqueante y no bloqueante; internamente el componente trabaja en un hilo secundario y las solicitudes se procesan de forma asíncrona, pero se puede realizar una solicitud y esperar hasta que esta se complete.

 

A continuación se muestra un ejemplo de cómo el cliente puede solicitar una página HTML a un servidor HTTP/2 y cómo puede funcionar en ambos modos.

Modo asíncrono

Obtenga la siguiente URL: https://www.google.com y reciba una notificación cuando el cliente reciba la respuesta completa. Después de llamar al método GETASYNC, el proceso continúa y el evento OnHTTP2Response se invoca cuando se recibe la respuesta.

 


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;

 

Modo de Bloqueo

Obtener la siguiente URL: https://www.google.com y esperar hasta que el cliente reciba la respuesta completa. Después de llamar al método GET, el proceso espera hasta que se reciba la respuesta o se alcance el tiempo de espera.

Puede acceder a los datos de respuesta sin procesar usando la propiedad Response del cliente HTTP/2. Aquí puede acceder a los encabezados sin procesar, el código de estado de respuesta, el conjunto de caracteres y más.

 


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));