如何使用 headers 通过 Android 中的 HTTPUrlConnection 调用 Youtube 数据 API?

How to call a Youtube Data API through HTTPUrlConnection in Android with using headers?

我正在尝试开发我的应用程序的一部分,我想在其中获取关键字的视频详细信息。我正在使用搜索列表 API。我想我的授权有问题。我收到 401。我已尝试传递我的授权详细信息。

我在浏览了一些在线资源后尝试了以下代码,目前我在获取输入流的那一行获取 java.io.FileNotFoundException。我收到的连接代码是 401。

给定的代码在 AsyncTask 的 doInBackground 中。

String ytres="";
        URL url;
        HttpURLConnection urlConnection = null;
        try {
            Log.d("youtubedata","a1");
            url = new URL("https://www.googleapis.com/youtube/v3/search?part=id&q=queen%20bohemian");
            Log.d("youtubedata","a2");
            Log.d("youtubedata","a");
            urlConnection = (HttpURLConnection) url
                    .openConnection();
            urlConnection.setRequestMethod("GET");
            urlConnection.setRequestProperty ("Authorization", "Bearer MYAPIKEY");
            urlConnection.setRequestProperty ("Accept", "application/json");
            Log.d("youtubedatanum",Integer.toString(urlConnection.getResponseCode()));
            InputStream in = urlConnection.getInputStream();

        InputStreamReader isw = new InputStreamReader(in);

        int data = isw.read();
        while (data != -1) {
            char current = (char) data;
            data = isw.read();
            ytres=ytres+current;
            System.out.print(current);
        }
        Log.d("youtubedata",ytres);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (urlConnection != null) {
            urlConnection.disconnect();
        }
    }
    return ytres;

我怀疑问题出在我传递 API 密钥的方式上。

对于YouTube数据API错误401

未经授权 (401) 的可能问题可能是

  • 需要授权
  • youtubeSignupRequired

检查 YouTube 数据 API 错误文档 Here

同时确认您已按照 THIS 的步骤整合 API。

示例API 您可以找到的代码Here

希望对您有所帮助。

请阅读 Calling the API and at Search Endpoint 中的 API 文档。

您会看到您的 URL 不包含作为 key 参数传递的所需 API 密钥。

Search.java 上挖掘 Google 自己的示例 Java 实现可能也是值得的。然而,由于它使用了库抽象层,该代码并不能立即提供帮助,因为它模糊了客户端应该直接使用 API 的方式。