2013-02-07 51 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,而不是形式参数。该文件应该更清楚。 –

相关问题