如何用.NET Core中的HTTPCLIENT读取标题值

发布于 2025-02-10 09:21:24 字数 906 浏览 1 评论 0原文

这是我在这里使用的代码

using (var client = new HttpClient())
{
  client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", HttpContext.Session.GetString("JwtToken"));            

  var url = $"...some url";            

  var requestUri = new Uri(url);

  var responseTask = client.GetAsync(requestUri);
  responseTask.Wait();
           

  var result = responseTask.Result;
  if (result.IsSuccessStatusCode)
  {
    var reportResults = Task.Run(async() => await result.Content.ReadAsAsync<JArray>()).Result;
    return reportResults;
  }
}

,如果我尝试访问这样的标题,

string error = responseTask.Headers.TryGetValue("X-TotalResults").FirstOrDefault();

我会遇到错误

Task<HttpResponseMessage> does not contain a 
definition for Headers and no accessible extension method Headers

,所以我如何阅读标题。

This is the code i'm using

using (var client = new HttpClient())
{
  client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", HttpContext.Session.GetString("JwtToken"));            

  var url = 
quot;...some url";            

  var requestUri = new Uri(url);

  var responseTask = client.GetAsync(requestUri);
  responseTask.Wait();
           

  var result = responseTask.Result;
  if (result.IsSuccessStatusCode)
  {
    var reportResults = Task.Run(async() => await result.Content.ReadAsAsync<JArray>()).Result;
    return reportResults;
  }
}

Here if i try to access header like this

string error = responseTask.Headers.TryGetValue("X-TotalResults").FirstOrDefault();

I'm getting error

Task<HttpResponseMessage> does not contain a 
definition for Headers and no accessible extension method Headers

So How i can read the header .. thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

简单爱 2025-02-17 09:21:24

您有一个任务&lt; httpresponsemessage&gt;,而不是httpresponsemessage

而不是使用.result,它出于许多原因是危险的,而是正确使用async

static HttpClient client = new HttpClient();

private async JArray GetReportResults()
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", HttpContext.Session.GetString("JwtToken"));            

    var url = $"...some url";            

    using (var response = await client.GetAsync(url))
    {           
        result.EnsureSuccessStatusCode()
        var reportResults = await result.Content.ReadAsAsync<JArray>();
        return reportResults;
    }
}

You have a Task<HttpResponseMessage> rather than a HttpResponseMessage.

Instead of using .Result, which is dangerous for many reasons, convert your code to use async properly.

static HttpClient client = new HttpClient();

private async JArray GetReportResults()
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", HttpContext.Session.GetString("JwtToken"));            

    var url = 
quot;...some url";            

    using (var response = await client.GetAsync(url))
    {           
        result.EnsureSuccessStatusCode()
        var reportResults = await result.Content.ReadAsAsync<JArray>();
        return reportResults;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文