using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://www.googleapis.com/youtube/v3/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync("search?q=manam&type=video&order=relevance&part=snippet&maxResults=50&key=AIzaSyA4GZFAgfvsAItwFRmnAZvbTHoDeyunf2k").Result;
if (response.IsSuccessStatusCode)
{
dynamic lists = await response.Content.ReadAsAsync<mycustomObject>(); // what should I write here
}
}
我试图在我的项目中使用Web API呼叫来获取YouTube视频。这是我到现在尝试的代码,要获得响应,我应该在mycustomobject代替什么?
当我在浏览器中使用上述URL尝试数据时,我正在获取数据,当我超过代码上方返回null,
上述代码有什么问题?
我只想从此方法获取数据,
任何帮助将不胜感激。
您需要一个代表从呼叫返回的JSON数据的类。
如果您在浏览器中调用您的获取请求,您会看到JSON响应看起来像这样:
{
kind: "youtube#searchListResponse"
etag: ""tbWC5XrSXxe1WOAx6MK9z4hHSU8/lh-waoy9ByBY2eB-oZs7niK51FU""
nextPageToken: "CDIQAA"
pageInfo:
{
totalResults: 176872
resultsPerPage: 50
}-
items: [...50]-
}
因此,您需要创建一个具有匹配字段的类,然后为您填充该命令命令。这样的东西:
public class YoutubeApiResponse()
{
public string kind {get; set;}
public string etag {get; set;}
public string nextPageToken {get; set;}
public PageInfo pageInfo {get; set;}
public List<Item> items {get; set;}
}
并这样打电话:
var youtubeResponse = await response.Content.ReadAsAsync<YoutubeApiResponse().Result();
我建议查看.NET客户端库 - 它将为您服务很多。