-1

我使用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

如果我添加,它不是 json[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。

为什么?

4

1 回答 1

3

您的第一个NSLog是典型的NSData日志结果,很难阅读。如果您想查看它以进行调试,您可以

NSLog(@"%@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);

显然替换jsonData为持有该NSData对象的任何变量。您可以在宣布失败之前对其进行检查。

当我对您记录的字符串进行解码时NSData,它似乎是 HTML 文件的开头,所以我敢打赌您的网络服务器正在报告错误。您必须查看NSString该 HTML 的版本以找出问题所在(您没有包含足够的内容供我们诊断,因为该版本NSLog过早NSData地切断了结果)。

在诊断问题方面,您必须向我们展示上述生成的消息NSLog。您可能还需要向我们展示AFNetworking您提出 Web 服务请求的代码。


通常,当您从 Web 服务器下载数据时,当您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]);
于 2012-12-25T07:44:06.923 回答