gpt4 book ai didi

c# - 从 Flurl HttpResponseMessage 获取响应正文

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:33 24 4
gpt4 key购买 nike

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

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

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);

}

最佳答案

如果我没理解错的话,您需要 HTTP 响应中的 Headers + Response body。

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;

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

 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 上。 (这就是为什么你必须避免在第一行代码中等待)

关于c# - 从 Flurl HttpResponseMessage 获取响应正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56697954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com