C# 如何在MVC6中使用HttpClient获取非原语类型
我在MVC 6项目中有以下WebAPI客户端代码:C# 如何在MVC6中使用HttpClient获取非原语类型,c#,asp.net-web-api,asp.net-core-mvc,C#,Asp.net Web Api,Asp.net Core Mvc,我在MVC 6项目中有以下WebAPI客户端代码: public async Task<Blog> GetData() { Blog result = null; using (var client = new HttpClient()) { client.BaseAddress = new Uri("http://localhost:55792/"); client.DefaultRequestHeaders.Accept.
public async Task<Blog> GetData()
{
Blog result = null;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:55792/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// New code:
HttpResponseMessage response = await client.GetAsync("api/values/1");
if (response.IsSuccessStatusCode)
{
result = await response.Content.???;
return result;
}
}
return result;
}
公共异步任务GetData()
{
Blog result=null;
使用(var client=new HttpClient())
{
client.BaseAddress=新Uri(“http://localhost:55792/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
//新代码:
HttpResponseMessage response=wait client.GetAsync(“api/values/1”);
if(响应。IsSuccessStatusCode)
{
结果=等待响应。内容。???;
返回结果;
}
}
返回结果;
}
我不能使用它,因为DNX核心不支持WebAPI.Client NuGet包(包含ReadAsync()
),所以我必须使用System.Net.Http
它只有3个读取功能:
ReadAsByteArrayAsync
ReadAsStreamAsync
ReadAsStringAsync
我现在应该使用什么?您可以反序列化JSON,Newtonsoft是一个流行的库:
...
string payload = await response.Content.ReadAsStringAsync();
var obj = JsonConvert.DeserializeObject<MyClass>(payload);
...
。。。
字符串负载=wait response.Content.ReadAsStringAsync();
var obj=JsonConvert.DeserializeObject(有效负载);
...
您可以反序列化JSON,Newtonsoft是一个流行的库:
...
string payload = await response.Content.ReadAsStringAsync();
var obj = JsonConvert.DeserializeObject<MyClass>(payload);
...
。。。
字符串负载=wait response.Content.ReadAsStringAsync();
var obj=JsonConvert.DeserializeObject(有效负载);
...
未测试代码,但在此处使用选项完成代码
公共行动结果第2部分()
{
列表=新列表();
HttpClient=新的HttpClient();
var result=client.GetAsync(“http://localhost:1963/api/Example三、结果;
if(结果。IsSuccessStatusCode)
{
list=result.Content.ReadAsAsync().result;
}
返回视图(列表);
}
未测试代码,但在此处使用选项完成代码 公共行动结果第2部分() { 列表=新列表(); HttpClient=新的HttpClient(); var result=client.GetAsync(“http://localhost:1963/api/Example三、结果; if(结果。IsSuccessStatusCode) { list=result.Content.ReadAsAsync().result; } 返回视图(列表); }
您从WebAPI获得的数据类型是什么?JSON?XML?另外为什么不将结果读取为字符串,然后手动将其解析为适当的对象呢?数据是JSON。我打算根据
ReadAsync()
获取数据,因此我不必手动解析字符串。非常简单,NewtonSoft是一个流行的库:NewtonSoft.Json.JsonConvert.DeserializeObject(resultAsString)代码>谢谢,它与DNX兼容。如果您将其更改为答案,我将接受。您从WebAPI获得的数据类型是什么?JSON?XML?另外为什么不将结果读取为字符串,然后手动将其解析为适当的对象呢?数据是JSON。我打算根据ReadAsync()
获取数据,因此我不必手动解析字符串。非常简单,NewtonSoft是一个流行的库:NewtonSoft.Json.JsonConvert.DeserializeObject(resultAsString)代码>谢谢,它与DNX兼容。如果你把它改成答案,我就接受。