我是C#
的新手,我正在努力研究如何将HTTPResponseMessage
存储在对象中。
static async Task RunAsync()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://api.themoviedb.org/3/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync("search/tv?api_key=MY_KEYa&query=hawaii%20five%20o&first_air_date_year=2010");
if (response.IsSuccessStatusCode)
{
// What to do here..?
}
}
}
我将此网站(http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client)用于上述代码。
使用此网站(http://json2csharp.com/),我创建了以下类:
class TVShowDTO
{
public string backdrop_path { get; set; }
public int id { get; set; }
public string original_name { get; set; }
public string first_air_date { get; set; }
public List<string> origin_country { get; set; }
public string poster_path { get; set; }
public double popularity { get; set; }
public string name { get; set; }
public int vote_average { get; set; }
public int vote_count { get; set; }
}
API响应:
{
page: 1
results: [1]
0: {
backdrop_path: "/mAXpHFDTMHvJt7WdibFWdbRsdCG.jpg"
id: 32798
original_name: "Hawaii Five-0"
first_air_date: "2010-09-20"
origin_country: [1]
0: "US"
-
poster_path: "/hO4BgEJhGIrFJ7f00sR6ZcdNB6y.jpg"
popularity: 1.06099324148627
name: "Hawaii Five-0"
vote_average: 7.3
vote_count: 6
}-
-
total_pages: 1
total_results: 1
}
以下是我尝试访问的API
的链接:http://docs.themoviedb.apiary.io/reference/search/searchtv/get
我需要先将response
作为string
吗?因为我在SO上看到的这些例子似乎使用输入string
。
我无法解决这个问题,因为当我打印response.Content
时,它只会返回"System.Net.Http.StreamContent"
对此的任何指导将不胜感激。
答案 0 :(得分:1)
首先,您希望得到一个响应字符串:
string responseContent = await response.Content.ReadAsStringAsync();
然后,您可以使用NUGET中的Json.NET等工具反序列化到您的对象:
var obj = JsonConvert.DeserializeObject<TVShowDTO>(responseContent);