youtube api 在 c# 代码中
youtube api in c# code
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
}
}
我正在尝试在我的项目中通过网络 api 调用获取 YouTube 视频。
这是我到目前为止尝试的代码,
要获得响应,我应该使用什么来代替 myCustomObject?
当我在浏览器中尝试使用上述 url 时,我正在获取数据,当我 运行 在上面编码时,它 return null,
上面的代码有什么问题吗?
我只想通过这种方法获取数据,
任何帮助将不胜感激。
您需要一个 class,它表示从调用返回的 JSON 数据。
如果您在浏览器中调用 GET 请求,您会看到 JSON 响应如下所示:
{
kind: "youtube#searchListResponse"
etag: ""tbWC5XrSXxe1WOAx6MK9z4hHSU8/lh-waoy9ByBY2eB-oZs7niK51FU""
nextPageToken: "CDIQAA"
pageInfo:
{
totalResults: 176872
resultsPerPage: 50
}-
items: [...50]-
}
因此,您需要创建一个 class,其中包含反序列化命令将为您填充的匹配字段。像这样:
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 - 它会为您解决很多此类问题。
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
}
}
我正在尝试在我的项目中通过网络 api 调用获取 YouTube 视频。 这是我到目前为止尝试的代码, 要获得响应,我应该使用什么来代替 myCustomObject?
当我在浏览器中尝试使用上述 url 时,我正在获取数据,当我 运行 在上面编码时,它 return null,
上面的代码有什么问题吗?
我只想通过这种方法获取数据,
任何帮助将不胜感激。
您需要一个 class,它表示从调用返回的 JSON 数据。
如果您在浏览器中调用 GET 请求,您会看到 JSON 响应如下所示:
{
kind: "youtube#searchListResponse"
etag: ""tbWC5XrSXxe1WOAx6MK9z4hHSU8/lh-waoy9ByBY2eB-oZs7niK51FU""
nextPageToken: "CDIQAA"
pageInfo:
{
totalResults: 176872
resultsPerPage: 50
}-
items: [...50]-
}
因此,您需要创建一个 class,其中包含反序列化命令将为您填充的匹配字段。像这样:
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 - 它会为您解决很多此类问题。