TsgcHTTP2Client方法 › PostFuture

PostFuture 方法

在后台线程中执行 HTTP/2 POST,并返回一个解析为响应正文的 future。

语法

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

参数

名称类型描述
aURLconst string将接收 POST 请求的绝对 URL。
aDataTStream提供请求正文的流。请保持该流在 future 完成之前有效;在发送请求期间,它会由后台线程读取。

返回值

一个 IsgcFuture<string>,解析为响应正文。调用 Await 阻塞直到响应到达,调用 ThenProc 在延续中使用正文,调用 OnError 处理故障,调用 Cancel 中止请求。

备注

PostFuture 是同步方法 Post 的 future 风格对应方法:请求在后台线程中执行,方法立即返回,因此调用线程永远不会被阻塞。与 PostAsync 不同,它不需要事件处理程序:响应通过返回的 future 传递。调用 Cancel 会断开客户端连接,因此仍在等待响应的请求会被中止而不是执行到结束;被中止或失败的请求会以异常拒绝该 future,该异常会传递给 OnError(或由 Await 重新引发)。需要 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;

返回方法