2013-02-07 76 views
1

soundcloud文檔沒有使用java包裝器更新播放列表的示例。我嘗試過這樣的事情,但沒有更新曲目。並沒有錯誤消息返回。如何用java的SoundCloud api包裝器更新播放列表

HttpResponse resp = wrapper 
    .put(Request.to("/me/playlists/123") 
    .with("playlist[title]", "updated title", "playlist[tracks]", "[ 
    {id: 10001}, 
    {id: 10002} 
    ]")); 

任何想法?

回答

3

問題是,您正在使用Rails樣式表單參數和JSON的混合。

有兩種選擇:

1)只能使用形式參數:在包裝

private void updatePlaylist() { 
    JSONObject json = createJSONPlaylist("updated title", 10001, 10002); 
    HttpResponse resp = api.put(Request.to("/playlists/123")      
     .withContent(json.toString(), "application/json")); 
} 

private JSONObject createJSONPlaylist(String title, long... trackIds) throws JSONException { 
    JSONObject playlist = new JSONObject();             
    playlist.put("title", title);                

    JSONObject json = new JSONObject();              
    json.put("playlist", playlist);               

    JSONArray tracks = new JSONArray();              
    playlist.put("tracks", tracks);               

    for (long id : trackIds) {                
     JSONObject track = new JSONObject();             
     track.put("id", id);                 
     tracks.put(track);                 
    }                       
    return json;                    
}                        

退房的測試:

HttpResponse resp = api.put(Request.to("/playlists/123")       
     .with("playlist[title]", "updated title")       
     .with("playlist[tracks][][id]", 10001)  
     .with("playlist[tracks][][id]", 10002)); 

2)提交播放列表數據作爲JSON看到他們在行動:

+0

我喜歡第二個更好。多謝! – syloc

+0

是的,你應該使用JSON和其他API,而不是形式參數。該文件應該更清楚。 –

相關問題