3

この問題は特に AFNetworking に関連しているのではなく、NSURLRequest の構築に関連している可能性があります。AFNetworking を使用して落下 GET リクエストを発行しようとしています。

curl -X GET \
  -H "X-Parse-Application-Id: Q82knolRSmsGKKNK13WCvISIReVVoR3yFP3qTF1J" \
  -H "X-Parse-REST-API-Key: iHiN4Hlw835d7aig6vtcTNhPOkNyJpjpvAL2aSoL" \
  -G \
  --data-urlencode 'where={"playerName":"Sean Plott","cheatMode":false}' \
  https://api.parse.com/1/classes/GameScore

これは parse.com API https://parse.com/docs/rest#queries-constraintsからのものです。

ただし、書き方がわかりません

[AFHTTPClient getPath:パラメータ:成功:失敗:]

この要求のために。where 句はディクショナリのようには見えませんが、この関数はパラメータ入力にディクショナリのみを使用します。

4

1 に答える 1

6

パラメータにはNSDictionary、URL でキーと値のペアに変換される が必要です。したがって、キーは簡単ですが、辞書に設定する前にJSONに変換する必要がある値に...

NSDictionary *jsonDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
                                @"Sean Plott", @"playerName",
                                [NSNumber numberWithBool:NO], @"cheatMode", 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 *parameters = [[NSDictionary alloc] initWithObjectsAndKeys:
                            json, @"where", nil];

クライアントがこのように構成されていると仮定すると(通常、サブクラス化AFHTTPClientして、このものを内部に移動できます

AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"https://api.parse.com/"]];
[client setDefaultHeader:@"X-Parse-Application-Id" value:@"Q82knolRSmsGKKNK13WCvISIReVVoR3yFP3qTF1J"];
[client setDefaultHeader:@"X-Parse-REST-API-Key" value:@"iHiN4Hlw835d7aig6vtcTNhPOkNyJpjpvAL2aSoL"];
[client registerHTTPOperationClass:[AFJSONRequestOperation class]];

その後、あなたは呼び出すことができるはずです

[client getPath:@"1/classes/GameScore"
     parameters:parameters 
        success:^(AFHTTPRequestOperation *operation, id responseObject) {
            NSLog(@"Success %@", responseObject);
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"Failed %@", error);
        }];
于 2012-05-29T23:29:54.900 に答える