【发布时间】:2012-09-05 21:41:37
【问题描述】:
我知道我的请求格式正确,但我从 Web 服务获得的响应不是 NSDictionary。
- 为什么不是 NSDictionary?
-
如何判断“responseObject”是什么类型的对象?
AFHTTPRequestOperation *operation = [[AFParseAPIClient sharedClient] HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) { if ([responseObject isKindOfClass:[NSDictionary class]]) { NSLog(@"Response for %@: %@", className, responseObject); [self writeJSONResponse:responseObject toDiskForClassWithName:className]; }else{ //NSLog(@"Response NOT NSDictionary: %@", [responseObject class]); NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; NSLog(@"str: %@", str); } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Request for class %@ failed with error: %@", className, error); }];
这是我得到的:
//Response NOT NSDictionary: <7b227265 73756c74 73223a5b 7b22636f ...>
编辑:这是我得到的:
str: {"results":[{"desc":"My description.","device_iPad":true,"device_iPhone":true,"createdAt":"2012-09-05T18:36:11.431Z","updatedAt":"2012-09-05T22:00:52.199Z"}]}
【问题讨论】:
-
[responseObject class]会告诉你它是什么。会不会只是一个字符串? -
这回答了我的问题的第 2 部分:__NSCFData。但我应该得到一个 NSDictionary...
-
可能服务返回错误。试试 NSString 方法
- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding并打印你的字符串,看看它包含什么。 -
不知道该怎么做。你能举个例子来处理上面的 responseObject 吗?
-
我不完全确定这会奏效,只是抛出一些想法:p .. 试试
NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]
标签: ios web-services afnetworking