web-dev-qa-db-ja.com

AFNetworkingを使用してネストされたJSONを送信する

登録データをサーバーに送信するために、JSONを使用しています。次の形式です。

_{"regData": {
 "City":"Some City",
 "Country":"Some Country",
 "Email_Id":"[email protected]",
 "MobileNumber":"+00xxxxxxxxxx",
 "UserName":"Name Of user"
 }
}
_

送信方法は次のとおりです。

_ NSURL * url = [[NSURL alloc] initWithString:registerUrlString];
            AFHTTPClient * httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
            httpClient.parameterEncoding = AFJSONParameterEncoding;
            [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES];
            NSDictionary * params = @{@"regData": @{
                                              @"City": self.cityField.text,
                                              @"Country": self.countryField.text,
                                              @"Email_Id": self.emailField.text,
                                              @"MobileNumber": self.numberField.text,
                                              @"UserName": self.userName.text,
                                              }
                                      };

            NSMutableURLRequest * request = [httpClient requestWithMethod:@"POST" path:registerUrlString parameters:params];
            AFHTTPRequestOperation * operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
                NSLog(@"Success: %@", JSON);

            } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
            NSLog(@"Error: %@", [error debugDescription]);
            }];

            [operation start];
_

しかし、残念ながら、このエラーが発生します。

Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x94b3c30 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

13
Homam

あなたの要求は大丈夫です。サーバーが無効なJSONオブジェクトで応答しているため、エラーError Domain=NSCocoaErrorDomain Code=3840が返されます。 NSLogoperation.responseStringは、何が返送されているかを確認します。

31
mattt

実際のエラーを取得するには、これを試してください

NSLog(@"Error: %@", [error debugDescription]);
NSLog(@"Error: %@", [error localizedDescription]);
2
Lithu T.V