2012-05-29 160 views
3

此問題可能與AFNetworking沒有特別關係,但更多的是構建NSURLRequest。 我想發出使用AFNetworking-將cURL請求(使用--data-urlencode)轉換爲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下降GET請求。此請求

然而,我無法弄清楚如何寫

[AFHTTPClient的getPath:參數:成功:失敗。 where子句看起來不像字典,但是此函數僅爲其參數輸入輸入字典。

+0

Day9把我帶到這裏! – dgrandes

回答

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); 
     }]; 
+0

這完美。非常感謝! – Devang