首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Flurl HttpResponseMessage获取响应正文

从Flurl HttpResponseMessage获取响应正文
EN

Stack Overflow用户
提问于 2019-06-21 14:26:29
回答 1查看 3.5K关注 0票数 3

我正在对一个Rest API Im运行进行一些自动监视,我需要从HttpResponseMessage对象中检索响应体。Im使用Flurl Http:https://flurl.dev/docs/fluent-http/

我知道如何通过在http请求的末尾添加".RecieveSomeForm()“来检索响应体,但我还需要获取响应头,因为来自Rest API的错误代码是作为头返回的。我的问题是--据我所知和我尝试过的--它是唯一一个我可以从中检索头文件的HttpResponseMessage对象。所以问题是:我如何从HttpResponseMessage中获取响应体,同时仍然能够检索报头以记录错误?

代码语言:javascript
复制
using (var cli = new FlurlClient(URL).EnableCookies())
{

//get response body - var is set to string and has only response body

var AsyncResponse = await cli.WithHeader("some header").Request("some end point").AllowAnyHttpStatus().PostJsonAsync(some body).ReceiveString();
Console.WriteLine(AsyncResponse);



//get headers - var is set to HttpResponseMessage

var AsyncResponse = await cli.WithHeader("some header").Request("some end point").AllowAnyHttpStatus().PostJsonAsync(some body);
Console.WriteLine(AsyncResponse.Headers);

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-21 14:42:18

如果我没理解错的话,你需要HTTP响应的头+响应体。

代码语言:javascript
复制
var response = await cli.WithHeader("some header").Request("some end point").AllowAnyHttpStatus().PostJsonAsync("some body");

var headers = response.Headers; //do your stuff
var responseBody = response.Content != null ? await response.Content.ReadAsStringAsync() : null;

另一个我个人不喜欢的选择:

代码语言:javascript
复制
 var responseTask = cli.WithHeader("some header", "haha").Request("some end point").AllowAnyHttpStatus().PostJsonAsync("some body");

 var headers = (await responseTask).Headers; //do your stuff
 var responseBody = await responseTask.ReceiveString();

不幸的是,Flurl的扩展方法可以在Task上使用,而不能在HttpResponseMessage上使用。(这就是为什么你必须避免在第一行代码中等待)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56697954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档