如何通过SoundCloud API添加注释

时间:2012-05-26 17:44:25

标签: objective-c macos api soundcloud

我想通过SoundCloud API发表评论,但看documentation似乎不可能,/tracks/{id}/comments唯一可用的方法似乎是GET。当我尝试发送POST我得到HTTP Error: 422时,如果我使用控制台也会发生同样的情况我也得到了422 "error_message": "Body can't be blank"即使我添加了body=test一个参数。

知道你应该如何通过API添加评论吗?

我可以看到,例如ruby SDK似乎是可能的:

# create a new timed comment
comment = client.post("/tracks/#{track.id}/comments", :comment => {
  :body => 'This is a timed comment',
  :timestamp => 1500
})

但我使用的是Objective-C SDK,这是我目前为止的代码(返回422):

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObject:content forKey:@"body"];
if (timestamp >= 0)
{
    [dict setObject:[NSString stringWithFormat:@"%i", timestamp] forKey:@"timestamp"];
}

NSString *resource = [NSString stringWithFormat:@"tracks/%i/comments", trackId];

[scAPI performMethod:@"POST" onResource:resource withParameters:dict context:delegate userInfo:nil];

2 个答案:

答案 0 :(得分:3)

好的,我能够自己找到它,我看了一下Java版本及其示例:

List<NameValuePair> params = new java.util.ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("comment[body]", "This is a test comment"));

HttpResponse response = api.post("tracks/" + TRACK_ID + "/comments", params);

所以奇怪的决定不仅要将body作为关键字而是comment[body],而不在API中记录它,这是我遇到的问题。我试图像建议的红宝石版本一样,NSDictionary使用密钥comment,另一个使用bodytimestamp,但这只会导致错误,因为SDK没想到嵌套字典。所以现在代码看起来像这样:

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObject:content forKey:@"comment[body]"];
if (timestamp >= 0)
{
    [dict setObject:[NSString stringWithFormat:@"%i", timestamp] forKey:@"comment[timestamp]"];
}

NSString *resource = [NSString stringWithFormat:@"tracks/%i/comments", trackId];

[scAPI performMethod:@"POST" onResource:resource withParameters:dict context:delegate userInfo:nil];

答案 1 :(得分:-1)

这是一款出色的音乐应用程序,可以让您与亚马逊的最新音乐,视频和电影保持良好的联系,同时也可以自由地使用其他产品。