我使用AFNetworking
请求服务器,但我输出如下:
2012-12-25 15:16:47.578 SmsForNewYear[3825:c07] <3c21444f 43545950 45206874 6d6c2050 55424c49 4320222d 2f2f5733 432f2f44 54442058 48544d4c 20312e30 20547261 6e736974 696f6e61 6c2f2f45 4e222022 68747470 3a2f2f77 77772e77 332e6f72
如果我添加[self setDefaultHeader:@"Accept" value:@"application/json"];
它返回:
SmsForNewYear[3920:c07] getNewSms:Expected content type {(
"text/json",
"application/json",
"text/javascript"
)}, got text/html
但我使用浏览器,它看起来像
{"rs_code":"200","data":{"sms_cate_list":[{"id":"26","name":"\u559c\u5e86","likes":"0","sms_num":"1","order_id":"1","is_index":"0","update_time":"1355932115"}
是json。
另一方面,我使用asihttprequest
可以返回json。
为什么?
答案 0 :(得分:3)
您的第一个NSLog
是典型的NSData
日志结果,很难阅读。如果您想查看它以进行调试,可以
NSLog(@"%@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);
显然用保留jsonData
个对象的变量替换NSData
。您可以在声明失败之前检查它。
当我解码您记录的NSData
字符串时,它似乎是HTML文件的开头,所以我敢打赌您的Web服务器报告错误。您必须查看该HTML的NSString
版本以确定问题所在(您没有包含足够的内容供我们诊断,因为NSLog
NSData
正在过早地切断结果。)
在诊断问题方面,您必须向我们展示上述NSLog
生成的消息。您可能还需要向我们展示您提出Web服务请求的AFNetworking
代码。
通常,当您从网络服务器下载数据时,当您NSLog
NSData
结果时,您会看到类似这样的内容。然后,您可以非常愉快地转到NSJSONSerialization
:
NSError *error = nil;
NSDictionary *jsonResult = [NSJSONSerialization JSONObjectWithData:jsonData
options:0
error:&error];
if (error != nil)
NSLog(@"Error in JSON: %@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);