HTTP/2 Client는 블로킹 및 논블로킹 모드로 작동할 수 있습니다. 내부적으로 구성 요소는 보조 스레드에서 작동하고 요청은 비동기적으로 처리되지만, 요청을 호출하고 이 요청이 완료될 때까지 기다릴 수 있습니다.
클라이언트가 HTTP/2 서버에 HTML 페이지를 요청하는 방법과 두 가지 모드 모두에서 작동하는 방법에 대한 예제는 아래를 참조하십시오.
다음 url을 가져옵니다: https://www.google.com 그리고 클라이언트가 전체 응답을 수신하면 알림을 받습니다. GETASYNC 메서드를 호출한 후 프로세스가 계속되고 응답이 수신되면 OnHTTP2Response 이벤트가 호출됩니다.
TsgcHTTP2Client *oClient = new TsgcHTTP2Client();
oClient->OnHTTP2Response = OnHTTP2ResponseEvent;
oClient->GetAsync("https://www.gooogle.com");
void OnHTTP2ResponseEvent(TObject *Sender, const TsgcHTTP2ConnectionClient *Connection,
const TsgcHTTP2RequestProperty *Request, const TsgcHTTP2ResponseProperty *Response)
{
ShowMessage(Response->Headers->Text + #13#10 + Response->DataString);
}
다음 url을 가져옵니다: https://www.google.com 그리고 클라이언트가 전체 응답을 수신할 때까지 기다립니다. GET 메서드를 호출한 후, 응답이 수신되거나 시간 초과에 도달할 때까지 프로세스가 대기합니다.
HTTP/2 클라이언트의 Response 속성을 사용하여 Raw Response 데이터에 액세스할 수 있습니다. 여기서 Raw Headers, Status 응답 코드, Charset 등에 액세스할 수 있습니다.
TsgcHTTP2Client *oClient = new TsgcHTTP2Client();
vResponse = oClient->Get("https://www.gooogle.com");
if (oClient->Response->Status == 200)
ShowMessage("Response from server: " + vResponse);
else
ShowMessage("Response Code: " + IntToStr(oClient->Response->Status));