簡體   English   中英

如何在 .net 核心中使用 HttpClient 讀取標頭值

[英]How to read header values with HttpClient in .net core

這是我正在使用的代碼

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

那么我如何閱讀標題..提前謝謝

您有一個Task<HttpResponseMessage>而不是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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM