0

YouTubeアカウントに新しいプレイリストを追加するためにYoutubeGDATAAPIを使用しようとしています。コードはドキュメントに基づいています:https ://developers.google.com/youtube/2.0/developers_guide_protocol_playlists#Adding_a_playlist

最初にアクセストークンを取得し、開発者キーを適切に使用します。投稿は問題なく機能しているようですが、応答を取り戻そうとすると、getInputStreamの呼び出し中にファイルが見つからないという例外が発生します。

誰かアイデアがありますか?ありがとう

接続コード(更新されたクリーナーバージョン)は次のとおりです。

@Override
protected Boolean doInBackground(Void... arg0) {
    BufferedReader input = null;
    InputStreamReader inputStreamReader = null;
    StringBuilder postContentXml = new StringBuilder();

    postContentXml.append("<?xml version='1.0' encoding='UTF-8'?>").
        append("<entry xmlns='http://www.w3.org/2005/Atom'") .
        append(" xmlns:yt='http://gdata.youtube.com/schemas/2007'>").
        append("<title type='text'>Sports Highlights Playlist</title>").
        append("<summary>A selection of sports highlights</summary>").
        append("</entry>");

    byte[] buffer = postContentXml.toString().getBytes();
    StringBuilder response = new StringBuilder();

    try {
        URL url = new URL("https://gdata.youtube.com/feeds/api/users/default/playlists");
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

        // Initialize connection parameters
        urlConnection.setConnectTimeout(30000);
        urlConnection.setReadTimeout(30000);
        urlConnection.setDoOutput(true);
        urlConnection.setRequestMethod("POST");

        // Headers initialization
        urlConnection.setRequestProperty("Content-Type", "application/atom+xml");
        urlConnection.setRequestProperty("Content-Length", String.valueOf(buffer.length));
        urlConnection.setRequestProperty("Authorization", mAuthToken);
        urlConnection.setRequestProperty("GData-Version", "2");
        urlConnection.setRequestProperty("X-GData-Key", YoutubeUtils.getDevKey());

        OutputStream os = urlConnection.getOutputStream();
        os.write(buffer, 0, buffer.length);
        os.flush();
        os.close();

        InputStream inputStream = urlConnection.getInputStream();

        inputStreamReader = new InputStreamReader(inputStream, "UTF-8");


        input = new BufferedReader(inputStreamReader, 4096);

        String strLine = null;
        while ((strLine = input.readLine()) != null) {
            response.append(strLine);
        }

        input.close();
        inputStreamReader.close();
        inputStream.close();
        urlConnection.disconnect();

        Log.d("CreatePlaylistTask", "Response: " + response);
    }
    catch(Exception e) {
        Log.d("CreatePlaylistTask", "Error occured: " + e.getMessage());
    }

    return true;
}
4

2 に答える 2

2

POSTは実際には成功しなかったと思います。

あなたのコードを見て推測しなければならないとしたら、問題はAuthorizationヘッダー値にあるのではないかと思います。どのmyAuthTokenように見えますか、そしてそれはどのような種類のトークンですか?たとえば、OAuth 2トークンの場合、値Bearer TOKEN_VALUEはだけでなく、である必要がありますTOKEN_VALUE

また、 YouTube Data APIのv3は近い将来リリースされ、Java用の新しいGoogleAPIクライアントライブラリを使用してAndroidでより良いサポートを提供することに注意してください。

于 2012-10-25T01:04:47.787 に答える
0

YouTube Data v3 API を使用してプレイリストを ListView に読み込む方法を示すサンプル Android アプリケーションをまとめました。

https://github.com/akoscz/YouTubePlaylist

このサンプル アプリケーションが機能するには、有効な API キーが必要ですアプリケーションをGoogle Developer Consoleに登録して、YouTube Data API を有効にすることができます。このサンプルアプリが使用する API キーは「ブラウザキー」であるため、Android アプリケーションではなく Web アプリケーションを登録する必要があります。

于 2013-12-18T08:55:16.097 に答える