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 会断开客户端连接,因此仍在等待响应的请求会被中止而不是执行到结束;被中止或失败的请求会以异常拒绝该 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;