【问题标题】:getting HttpResponseMessage from a Task<HttpResponseMessage>从 Task<HttpResponseMessage> 获取 HttpResponseMessage
【发布时间】:2016-12-02 16:31:38
【问题描述】:

在 HttpClient using 语句中,我需要从某处 HttpResponseMessage 解包。

using (HttpClient client = new HttpClient())
{
     client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authUser);
     Task<HttpResponseMessage> m = client.GetAsync(url);   
     // HttpResponseMessage msg = ???              
     task.Wait();
     return task.Result;
}

我的问题是:如何从这一行获取 HttpResponseMessage

Task<HttpResponseMessage> m = client.GetAsync(url);   

【问题讨论】:

    标签: c# asp.net .net asp.net-web-api


    【解决方案1】:

    你应该await这个任务:

    HttpResponseMessage m = await client.GetAsync(url);   
    

    为此,需要将调用方法标记为async

    【讨论】:

      【解决方案2】:

      要获取 HttpResponseMessasge,您应该使用 Task.Result 属性。 这是从 Task 获得的带有 HttpResponseMessage 的代码(稍作修改):

      using (HttpClient client = new HttpClient())
      {
          client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authUser);
          Task<HttpResponseMessage> task = client.GetAsync(uri);
          **HttpResponseMessage msg = task.Result;**
          task.Wait();
          return task.Result;
      }
      

      【讨论】:

      猜你喜欢
      • 2020-08-10
      • 2017-12-17
      • 2023-03-08
      • 2019-02-21
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多