TsgcHTTP2Client | Request HTTP/2 Method

O HTTP/2 Client pode trabalhar em modo bloqueante e não bloqueante; internamente o componente trabalha em um thread secundário e as requisições são processadas de forma assíncrona, mas você pode fazer uma chamada de requisição e aguardar até que esta requisição seja concluída.

 

Veja abaixo um exemplo de como o cliente pode solicitar uma página HTML a um servidor HTTP/2 e como pode funcionar em ambos os modos.

Asynchronous Mode

Obtenha a seguinte url: https://www.google.com e seja notificado quando o cliente receber a resposta completa. Depois de chamar o método GETASYNC, o processo continua e o evento OnHTTP2Response é chamado quando a resposta é recebida.

 


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 bloqueio

Obtém a seguinte url: https://www.google.com e aguarda até que o cliente receba a resposta completa. Depois de chamar o método GET, o processo aguarda até que a resposta seja recebida ou o tempo limite seja atingido.

Você pode acessar os dados da Resposta Bruta usando a propriedade Response do cliente HTTP/2. Aqui você pode acessar os Cabeçalhos Brutos, o código de status da resposta, o Charset e mais.

 


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