TsgcHTTP2Client | Metoda żądania HTTP/2

Klient HTTP/2 może działać w trybie blokującym i nieblokującym; wewnętrznie komponent działa w wątku pomocniczym, a żądania są przetwarzane asynchronicznie, jednak można wywołać żądanie i poczekać na jego zakończenie.

 

Poniżej przedstawiono przykład pokazujący, jak klient może zażądać strony HTML od serwera HTTP/2 i jak można pracować w obu trybach.

Tryb asynchroniczny

Pobierz następujący adres URL: https://www.google.com i otrzymaj powiadomienie, gdy klient odbierze pełną odpowiedź. Po wywołaniu metody GETASYNC przetwarzanie jest kontynuowane, a zdarzenie OnHTTP2Response jest wywoływane po odebraniu odpowiedzi.

 


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;

 

Tryb blokujący

Pobierz następujący adres URL: https://www.google.com i czekaj, aż klient odbierze pełną odpowiedź. Po wywołaniu metody GET proces czeka, aż odpowiedź zostanie odebrana lub upłynie limit czasu.

Dostęp do surowych danych odpowiedzi można uzyskać za pomocą właściwości Response klienta HTTP/2. Umożliwia ona dostęp do surowych nagłówków, kodu statusu odpowiedzi, zestawu znaków i innych informacji.

 


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