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 - 它会为您解决很多此类问题。