在我的 Windows Phone 应用程序中,我使用以下代码将曲目添加到播放列表(即对播放列表/id 端点的 PUT 请求)
using (HttpClient httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(AccessToken);
HttpResponseMessage response = await httpClient.PutAsync(endpoint, new StringContent(data));
response.EnsureSuccessStatusCode();
}
其中“data”是 JSON 数据,其形式为:
{"playlist":{"tracks":["TrackId(待添加)"]}}
上面的代码返回“OK”(200) 响应,但曲目未添加到播放列表中!
我做错了什么?
我使用 Put 来替换集合中的轨道 id。 这是示例代码
for (String s : trackIds)
nameValuePairs.add(new BasicNameValuePair("playlist[tracks][][id]", s.trim()));
String url = "https://api.soundcloud.com/playlists/" + setId + ".json";
httpPut(url, nameValuePairs);
问题在于(请求正文的)JSON 数据格式不正确。 “数据”必须采用以下形式:
{"playlist":{"tracks":[{"id":"__"}, {"id":"__"}, {"id":"__"}]}}
此处必须存在 id-value 对
播放列表中已存在的每首曲目,以及
您要添加到播放列表的曲目
(请记住,这是一个 PUT 请求。因此,您需要更新数据,即更新“播放列表”的“曲目”属性)