我想通过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];
答案 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
,另一个使用body
和timestamp
,但这只会导致错误,因为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)
这是一款出色的音乐应用程序,可以让您与亚马逊的最新音乐,视频和电影保持良好的联系,同时也可以自由地使用其他产品。