我想从网页api赶上JSON请求。当我从服务器获得JSON格式的响应时,我会以NSData格式接收它,而不是在NSDictionnary中。我从本教程http://www.raywenderlich.com/30445/afnetworking-crash-course#(一个RESTful类的段落)中启发了我自己,以便通过AFJSONRequestOperation更改我的客户端的注册操作类来实现免费的JSON解析。但是,它不起作用,我仍然以NSData格式获得响应。JSON解析与AFNetworking
编辑:以下是完整的错误消息:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFData objectForKey:]: unrecognized selector sent to instance 0x753aa00'
这里是服务器的响应:
{"uid":"98545931","token":"98545931:176:ec0b862ba57fef88394950dd0cc41491"}
是否有人有一个想法,为什么它不能被自动解析?
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:baseurl];
//Here, we tell the AFHTTPClient that the server is responding to us in JSON format.
[client registerHTTPOperationClass:[AFJSONRequestOperation class]];
//Creating the dictionary containing the post parameters.
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:username, @"username", password, @"password", nil];
//AUTHENTIFICATION. Retrieving token and uid by POST method.
[client postPath:@"/auth" parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSString *text = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"Response: %@", text);
[responseField setText:text];
self.jsonResponse = responseObject;
//The NSJSONSerialization method to transform the NSData responseObject into a dictionnary does work
self.jsonResponse = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
//This NSLog makes the app crash with an unrecognized selector sent error
NSLog(@"User ID: %@",[jsonResponse objectForKey:@"uid"]);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
NSLog(@"%@", [error localizedDescription]);
[responseField setText:[error localizedDescription]];
}];
你真的检查过'responseObject'类吗? – Wain
完整的错误信息会有帮助... –
对不起,添加完整的错误信息。至于responseObject的类,我使用isKindOfClass方法进行了检查,它实际上是一个NSData。 –