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 数据。
如果您调用 GET在浏览器中请求,您将看到 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 Client Library - 它会为你处理很多这样的事情。
关于c# - c#代码中的youtube api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30046092/