C# 从任务获取HttpResponseMessage<;HttpResponseMessage>;

C# 从任务获取HttpResponseMessage<;HttpResponseMessage>;,c#,asp.net,.net,asp.net-web-api,C#,Asp.net,.net,Asp.net Web Api,在使用语句的HttpClient内部,我需要从某个地方打开HttpResponseMessage using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authUser); Task<HttpResponseMessage> m = client.GetAsy

在使用语句的HttpClient内部,我需要从某个地方打开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;
}
使用(HttpClient=new HttpClient())
{
client.DefaultRequestHeaders.Authorization=新的AuthenticationHeaderValue(“基本”,authUser);
Task m=client.GetAsync(url);
//HttpResponseMessage消息=???
task.Wait();
返回任务。结果;
}
我的问题是:如何从这条线路获取HttpResponseMessage

Task<HttpResponseMessage> m = client.GetAsync(url);   
Task m=client.GetAsync(url);
您应该执行以下任务:

HttpResponseMessage m = await client.GetAsync(url);   

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

,以获取HttpResponseMessage,您应该使用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;
}
使用(HttpClient=new HttpClient())
{
client.DefaultRequestHeaders.Authorization=新的AuthenticationHeaderValue(“基本”,authUser);
Task=client.GetAsync(uri);
**HttpResponseMessage msg=task.Result**
task.Wait();
返回任务。结果;
}

这通常是一个非常糟糕的主意: