私は本当にこれに頭を悩ませています。Pocket APIを使用して、ユーザーが自分のアプリから Pocket の記事をアーカイブできるようにしていますが、以下のコードを使用してアーカイブしようとすると、常に次のエラーが発生します。
エラー Domain=PocketSDK Code=400 「無効なリクエストです。API ドキュメントを参照してください」 UserInfo=0xc17d3b0 {NSLocalizedDescription=無効なリクエストです。API ドキュメントを参照してください}
コード:
NSDictionary *arguments = @{@"action": @"archive",
@"item_id": articleID};
[[PocketAPI sharedAPI] callAPIMethod:@"send" withHTTPMethod:PocketAPIHTTPMethodPOST arguments:arguments handler:^(PocketAPI *api, NSString *apiMethod, NSDictionary *response, NSError *error) {
if (!error) {
NSLog(@"Archived article.");
}
}];
それの正確にどの部分が間違っていますか?send メソッドを API に POST していませんか?
EDIT:@"action"
上記のNSDictionaryを提供するように変更しましたが@"actions"
、エラーなしで返されますが、Pocket Webサイトには影響しません...
EDIT 2: Joseph Chen の応答に従って、コードを次のように変更しました。
// Create data to pass to the Pocket API (a JSON array of actions)
NSError *error;
NSArray *actions = @[@{@"action": @"archive",
@"item_id": articleID}];
NSData *actionsAsJSONData = [NSJSONSerialization dataWithJSONObject:actions options:kNilOptions error:&error];
NSString *actionsAsJSONString = [[NSString alloc] initWithData:actionsAsJSONData encoding:NSUTF8StringEncoding];
NSDictionary *arguments = @{@"actions": actionsAsJSONString};
[[PocketAPI sharedAPI] callAPIMethod:@"send" withHTTPMethod:PocketAPIHTTPMethodPOST arguments:arguments handler:^(PocketAPI *api, NSString *apiMethod, NSDictionary *response, NSError *error) {
if (!error) {
NSLog(@"%@", response);
}
else {
NSLog(@"%@", error);
}
}];
どちらが返されますか:
action_results" = (
1
);
status = 1;
しかし、ウェブサイトにアクセスしてログインすると、「アーカイブ」した記事がまだアーカイブされていない状態で目の前に表示されます。