c# - c#代码中的youtube api

标签 c# api get youtube-api

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/

相关文章:

c# - 有没有办法更改 'Add or Remove Programs' 中 ClickOnce 应用程序的图标?

python - 将数据库数据导入 Joomla

php - Analytics API 网站内容平均 session 持续时间?

python - HTTP请求相当于 `curl --user`参数?

c# - C#:在列表中查找类字段

c# - EF Core 中使用 Fluent API 的一对一关系

java - Siteminder:Java 代理 API

javascript - 在 <h2/> 标题中显示 JS 表中的 html 数据

jQuery 和 AJAX 我应该使用什么?

c# - .Net - 一般数字格式似乎不保留零