TsgcHTTP2Client | Request HTTP/2 Method

HTTP/2 Client는 블로킹 및 논블로킹 모드로 작동할 수 있습니다. 내부적으로 구성 요소는 보조 스레드에서 작동하고 요청은 비동기적으로 처리되지만, 요청을 호출하고 이 요청이 완료될 때까지 기다릴 수 있습니다.

 

클라이언트가 HTTP/2 서버에 HTML 페이지를 요청하는 방법과 두 가지 모드 모두에서 작동하는 방법에 대한 예제는 아래를 참조하십시오.

Asynchronous Mode

다음 url을 가져옵니다: https://www.google.com 그리고 클라이언트가 전체 응답을 수신하면 알림을 받습니다. GETASYNC 메서드를 호출한 후 프로세스가 계속되고 응답이 수신되면 OnHTTP2Response 이벤트가 호출됩니다.

 


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;

 

블로킹 모드

다음 url을 가져옵니다: https://www.google.com 그리고 클라이언트가 전체 응답을 수신할 때까지 기다립니다. GET 메서드를 호출한 후, 응답이 수신되거나 시간 초과에 도달할 때까지 프로세스가 대기합니다.

HTTP/2 클라이언트의 Response 속성을 사용하여 Raw Response 데이터에 액세스할 수 있습니다. 여기서 Raw Headers, Status 응답 코드, Charset 등에 액세스할 수 있습니다.

 


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