HttpContent.ReadAsAsync在哪里?

时间:2012-05-01 14:42:51

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

我在网上看到大量使用新HttpClient对象(作为新Web API的一部分)的示例,应该有HttpContent.ReadAsAsync<T>方法。但是,MSDN没有提到这种方法,IntelliSense也没有找到它。

它去了哪里,我该如何解决它?

7 个答案:

答案 0 :(得分:368)

看起来它是一个扩展方法(在System.Net.Http.Formatting中):

HttpContentExtensions Class

<强>更新

  

PM&GT; install-package Microsoft.AspNet.WebApi.Client

根据System.Net.Http.Formatting NuGet包页面,System.Net.Http.Formatting包现已成为旧版,可以在NuGet here上的Microsoft.AspNet.WebApi.Client包中找到。

答案 1 :(得分:63)

我有同样的问题,所以我只是获取JSON字符串并反序列化到我的类:

HttpResponseMessage response = await client.GetAsync("Products");
//get data as Json string 
string data = await response.Content.ReadAsStringAsync();
//use JavaScriptSerializer from System.Web.Script.Serialization
JavaScriptSerializer JSserializer = new JavaScriptSerializer();
//deserialize to your class
products = JSserializer.Deserialize<List<Product>>(data);

答案 2 :(得分:18)

如果您已使用Newtonsoft.Json但又不想安装Microsoft.AspNet.WebApi.Client

 var myInstance = JsonConvert.DeserializeObject<MyClass>(
   await response.Content.ReadAsStringAsync());

答案 3 :(得分:4)

2021 更新:看起来该方法已在 .NET5 中删除。或者,您可以使用 ReadFromJsonAsync<>() 中的 System.Net.Http.Json.HttpContentJsonExtensions。它解决了目的。

答案 4 :(得分:3)

只需右键单击您的项目,然后点击Manage NuGet Packages搜索Microsoft.AspNet.WebApi.Client即可安装它,您将可以访问扩展方法。

答案 5 :(得分:0)

已经多次尝试了此操作,并遵循了一系列建议,如果在安装NuGet Microsoft.AspNet.WebApi.Client后找不到可用的话,请从解决方案中的packages文件夹中手动添加引用,以:< / p>

\Microsoft.AspNet.WebApi.Client.5.2.6\lib\net45\System.Net.Http.Formatting.dll

不要陷入向System.Net.Http.Formatting.dll NuGet添加较旧引用的陷阱

答案 6 :(得分:0)

您可以编写扩展方法:

public static async Task<Tout> ReadAsAsync<Tout>(this System.Net.Http.HttpContent content) {
    return Newtonsoft.Json.JsonConvert.DeserializeObject<Tout>(await content.ReadAsStringAsync());
}