TsgcHTTP2Client › Metody › PostFuture
Wykonuje żądanie POST HTTP/2 w wątku w tle i zwraca future, który rozwiązuje się do treści odpowiedzi.
function PostFuture(const aURL: string; aData: TStream): IsgcFuture<string>;
| Nazwa | Typ | Opis |
|---|---|---|
aURL | const string | Bezwzględny adres URL, który odbierze żądanie POST. |
aData | TStream | Strumień 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. |
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.
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.
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;