TsgcHTTP2Client › メソッド › PostFuture
バックグラウンドスレッドで HTTP/2 POST を実行し、レスポンス本文で解決される future を返します。
function PostFuture(const aURL: string; aData: TStream): IsgcFuture<string>;
| 名前 | タイプ | 説明 |
|---|---|---|
aURL | const string | POST リクエストを受信する絶対 URL。 |
aData | TStream | リクエスト本文を提供するストリームです。future が完了するまでストリームを保持してください。リクエストの送信中に、バックグラウンドスレッドから読み取られます。 |
レスポンス本文で解決される IsgcFuture<string> です。Await を呼び出すとレスポンスが到着するまでブロックします。ThenProc で本文を継続処理の中で利用し、OnError で失敗を処理し、Cancel でリクエストを中止します。
PostFuture は、同期メソッド Post の future スタイル版です。リクエストはバックグラウンドスレッドで実行され、メソッドは直ちに戻るため、呼び出し元のスレッドがブロックされることはありません。PostAsync とは異なり、イベントハンドラーは不要です。レスポンスは返された future を通じて配信されます。Cancel を呼び出すとクライアントが切断されるため、レスポンスを待機中のリクエストは完了まで実行されるのではなく中止されます。中止されたリクエストや失敗したリクエストは、OnError に配信される(または Await によって再送出される)例外で future を拒否します。Delphi 2010 以降(および C++Builder 2010 以降)が必要です。.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;