I'm developing an app that needs to send request to web service and obtain JSON for the next process. I'm using AFNetworking
for the request. Following is my PHP code
$data = array(
array(
'userID' => 'xxx'
)
);
echo json_encode($data);
I've already verified the above code, and the result printed is fine.
[{"userID":"xxx"}]
Then, I use AFNetworking
to send a request for this Json data as below
NSDictionary *parameters = @{@"action": @"verifyUDID", @"UDID": udid};
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] init];
[manager POST:@"http://roommateradar.com/RoommateRadarAPI.php"
parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@",responseObject);
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
The NSLog
is correctly show the JSON
data, but the next line which is parsing JSON
to NSDictionary will cause a crash, the output is like below
2014-04-10 21:59:56.893 RoommateRadar[2941:60b] (
{
userID = xxx;
}
)
2014-04-10 21:59:56.893 RoommateRadar[2941:60b] -[__NSCFArray bytes]: unrecognized selector sent to instance 0x1493e660
2014-04-10 21:59:56.895 RoommateRadar[2941:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray bytes]: unrecognized selector sent to instance 0x1493e660'
So you can see that the NSLog(@"%@",responseObject); is actually showing correct thing. BTW, I also tried
[NSJSONSerialization isValidJSONObject:responseObject];
to verify the responseObject, the result is also valid.
Any little help?