TsgcHTTP2ClientMetody › PostFuture

PostFuture Metoda

Wykonuje żądanie POST HTTP/2 w wątku w tle i zwraca future, który rozwiązuje się do treści odpowiedzi.

Składnia

function PostFuture(const aURL: string; aData: TStream): IsgcFuture<string>;

Parametry

NazwaTypOpis
aURLconst stringBezwzględny adres URL, który odbierze żądanie POST.
aDataTStreamStrumień dostarczający treść żądania. Strumień należy utrzymać przy życiu do czasu zakończenia future; jest on odczytywany z wątku w tle podczas wysyłania żądania.

Wartość zwracana

Obiekt IsgcFuture<string>, który rozwiązuje się do treści odpowiedzi. Należy wywołać Await, aby zablokować do nadejścia odpowiedzi, ThenProc, aby przetworzyć treść w kontynuacji, OnError, aby obsłużyć błędy, oraz Cancel, aby przerwać żądanie.

Uwagi

PostFuture jest odpowiednikiem w stylu future synchronicznej metody Post: żądanie jest wykonywane w wątku w tle, a metoda natychmiast zwraca sterowanie, dzięki czemu wątek wywołujący nigdy nie jest blokowany. W przeciwieństwie do PostAsync nie jest wymagana żadna procedura obsługi zdarzeń: odpowiedź jest dostarczana poprzez zwrócony future. Wywołanie Cancel rozłącza klienta, dzięki czemu żądanie wciąż oczekujące na odpowiedź zostaje przerwane, zamiast być wykonane do końca; przerwane lub nieudane żądanie odrzuca future z wyjątkiem dostarczanym do OnError (lub zgłaszanym ponownie przez Await). Wymaga Delphi 2010 lub nowszego (oraz C++Builder 2010 lub nowszego); nie jest dostępna w edycji .NET.

Przykład

oBody := TStringStream.Create('{"name":"John"}');
oClient.Request.ContentType := 'application/json';
oFuture := oClient.PostFuture('https://api.example.com/users', oBody);
try
  WriteLn(oFuture.Await);
finally
  oBody.Free;
end;

Powrót do metod