我在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.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;
}
我无法使用它,因为DNX核心不支持WebAPI.Client NuGet包(包含ReadAsync<MyClass>()
)所以我必须使用System.Net.Http。
它只有3个阅读功能:
ReadAsByteArrayAsync
ReadAsStreamAsync
ReadAsStringAsync
他们都不能读取任意类型的对象。
我现在应该使用什么?
答案 0 :(得分:3)
你可以反序列化JSON,Newtonsoft是一个流行的库:
...
string payload = await response.Content.ReadAsStringAsync();
var obj = JsonConvert.DeserializeObject<MyClass>(payload);
...
答案 1 :(得分:2)
未经过测试的代码,但此处使用download选项
完成了代码 public ActionResult Part2()
{
List<Employee> list = new List<Employee>();
HttpClient client = new HttpClient();
var result = client.GetAsync("http://localhost:1963/api/Example").Result;
if (result.IsSuccessStatusCode)
{
list = result.Content.ReadAsAsync<List<Employee>>().Result;
}
return View(list);
}