1

Java、aReadableByteChannelおよびを使用して、 FileOutputStreamSoundcloud から wav ファイルを取得しようとしています。

public static void wavTest() {

    URL website = null;
    try {
        website = new URL("https://api.soundcloud.com/tracks/123456789/download?client_id=12lhfdh5k55....283);
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    ReadableByteChannel rbc = null;
    try {
        rbc = Channels.newChannel(website.openStream());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    FileOutputStream fos = null;
    try {
        fos = new FileOutputStream("/Users/name/Desktop/test.wav");
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

URL はブラウザーに貼り付けてフル トラックをダウンロードすると機能しますが、上記のコードを使用してどのトラックをダウンロードしようとしても、ファイルには常に次のプロパティがあります。

28 bytes (4 KB on disk)

明らかに私は何か間違ったことをしています。誰かが私を助けたり、正しい方向に向けたりできますか?

4

2 に答える 2

0

実際に受信したデータを見てください。おそらく、エラー応答 (たとえば、無効な要求情報<error>401 - Unauthorized</error>のみを含むドキュメントで応答する) またはその他のステータス応答です。

おそらく、送信しているIDまたはセッションキーに問題があるか、リクエストで必要なHTTPヘッダーを忘れている可能性があります(私はSoundCloud APIに特に精通していません)。

于 2013-11-08T07:40:13.403 に答える