我在网络上看到大量使用新的HttpClient对象(作为新web API的一部分)的例子,应该有HttpContent。ReadAsAsync < T >方法。但是,MSDN没有提到这个方法,智能感知也没有找到它。
它去哪里了,我该如何解决它?
我在网络上看到大量使用新的HttpClient对象(作为新web API的一部分)的例子,应该有HttpContent。ReadAsAsync < T >方法。但是,MSDN没有提到这个方法,智能感知也没有找到它。
它去哪里了,我该如何解决它?
当前回答
我有同样的问题,所以我只是得到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);
其他回答
你可以写扩展方法:
public static async Task<Tout> ReadAsAsync<Tout>(this System.Net.Http.HttpContent content) {
return Newtonsoft.Json.JsonConvert.DeserializeObject<Tout>(await content.ReadAsStringAsync());
}
我有同样的问题,所以我只是得到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);
只需右击在你的项目去管理NuGet包搜索Microsoft.AspNet.WebApi.Client安装它,你就可以访问扩展方法。
如果你在安装NuGet Microsoft.AspNet.WebApi.Client后没有找到它,在解决方案的packages文件夹中手动添加一个引用:
\Microsoft.AspNet.WebApi.Client.5.2.6\lib\net45\System.Net.Http.Formatting.dll
不要陷入将旧的引用添加到System.Net.Http.Formatting.dll NuGet的陷阱
如果你已经在使用Newtonsoft。Json,不想安装Microsoft.AspNet.WebApi.Client:
var myInstance = JsonConvert.DeserializeObject<MyClass>(
await response.Content.ReadAsStringAsync());