程序未从SearchListResponse响应

时间:2018-04-07 17:01:50

标签: c# google-api youtube-api youtube-data-api google-api-dotnet-client

我正在尝试使用Winforms应用收集YouTube视频的数据。当我按下面所示调用YTSearch()方法时,程序到达时会停止响应

var slResponse = await slRequest.ExecuteAsync(); 

请求已启动,但未停止,既未完成,也未触发try catch上的catch。我使用Discord.NET设法使用Discord bot完成同样的工作。在输出中是

  

抛出异常:Google.Apis.dll中的'Google.GoogleApiException'   抛出异常:mscorlib.dll中的“Google.GoogleApiException”   抛出异常:mscorlib.dll`中的'Google.GoogleApiException'

图书馆:

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Windows.Forms;
using Google.Apis.YouTube.v3;
using Google.Apis.Services;
using System.Diagnostics;

方法:

public async Task<List<Video>> YTSearch(string query)
{
    string ytAPI = APIKEY; // Ommitted
    var ytService = new YouTubeService(new BaseClientService.Initializer()
    {
        ApiKey = ytAPI,
        ApplicationName = "YouTubeDownloader"
    });
    var slRequest = ytService.Search.List("snipper");
    slRequest.Q = query;
    slRequest.MaxResults = 10;
    var slResponse = await slRequest.ExecuteAsync();
    List<Video> vidList = new List<Video>();
    return vidList;
}

致电:

private void btnSearch_Click(object sender, EventArgs e)
{
    List<Video> vidList = YTSearch(txtSearch.Text).Result;
}

2 个答案:

答案 0 :(得分:0)

首先,你有一个小错字,你应该修复与你的错误无关。第一个参数是部件有效值

  1. contentDetails:2
  2. id:0
  3. 摘录:2
  4. 你有剪刀

    不清楚这是问题所在,因为您所遇到的错误与API无关。

    问题听起来更像是dll的问题。我会尝试重新导入nuget包,确保你在项目中使用.NET 4.5

答案 1 :(得分:0)

我没有对此进行测试,但我相当确定您需要使用lmtree()。因此,在您的ConfigureAwait(false)方法中,您需要使用以下行:

YTSearch

这是必需的,因为您使用var slResponse = await slRequest.ExecuteAsync().ConfigureAwait(false); 阻止了按钮处理程序中的结果。

This MSDN article有点旧,但解释了这个问题。