1

PUT リクエストを使用して、Parse でデータをインクリメントしようとしています。

-(void)requestHit {

AFHTTPClient *client = [[AFHTTPClient alloc]initWithBaseURL:[NSURL     URLWithString:kHBFParseAPIBaseURLString]];
[client setDefaultHeader:@"X-Parse-Application-Id" value:kHBFParseAPIApplicationId];
[client setDefaultHeader:@"X-Parse-REST-API-Key" value:kHBFParseAPIKey];

[client registerHTTPOperationClass:[AFJSONRequestOperation class]];

NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                @"Increment",@"__op", [NSNumber numberWithInt:100],@"amount",
                               nil];

NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary options:0 error:&error];

if (!jsonData) {
    NSLog(@"NSJSONSerialization failed %@", error);
}

NSString *json = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];

NSDictionary * params = [[NSDictionary alloc]initWithObjectsAndKeys: json, @"hot", nil];


[client putPath:self.shopping.objectId parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject){
    NSLog(@"Success %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Failed %@", error);
}];
}

エラー コード 400 が表示されます。400 が悪い URL を意味することはわかっていますが、Safari で URL を確認したところ、Web サイトにアクセスできました。辞書が間違った方法でコーディングされているのではないかと考えていましたが、手がかりがありません。Parse Web サイトのインクリメント用の REST API cURL は次のとおりです。

curl -X PUT \
-H "X-Parse-Application-Id: DWZFxindnjGtp3SCMmA4iGaYN55dgVDRmobt7mkC" \
-H "X-Parse-REST-API-Key: QbjhRMhVshPkJmEoDdpS3xAkNOofzLsUBlMBQETU" \
-H "Content-Type: application/json" \
-d '{"score":{"__op":"Increment","amount":1}}' \
https://api.parse.com/1/classes/GameScore/Ed1nuqPvcm

助けてください~~

4

2 に答える 2

0

一部の Java Web サーバーは @"__op":@(1) この種のパラメーターを受信できません。手動で @"0" または @"1" に変換する必要があります。これにより 400 エラーを回避できます。やってみなよ。

于 2016-08-07T10:11:00.820 に答える