我在网上看到大量使用新HttpClient
对象(作为新Web API的一部分)的示例,应该有HttpContent.ReadAsAsync<T>
方法。但是,MSDN没有提到这种方法,IntelliSense也没有找到它。
它去了哪里,我该如何解决它?
答案 0 :(得分:368)
看起来它是一个扩展方法(在System.Net.Http.Formatting中):
<强>更新强>
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());
}