- 原因在于出现特殊字符是AFNetworking无法解析的,会直接报错,那么当你在发Post请求时,返回结果会直接进如Fail代码块,其实在Fail中用Operation的NSString可以直接输出接收到的数据,是String,可以清楚的看到服务器端数据有哪些含有特殊字符,但是有一些字符是不好看到的,比如“Tab”键打出的那种四个空格,项目中用户有时候很常用到Tab键,最好的方法是在AFNetworking源码中添加字符过滤功能。
处理办法:找到AFNetworking包中AFURLResponseSerialization.m文件,大概在第250行左右添加如下过滤方法:
BOOL isSpace = [data isEqualToData:[NSData dataWithBytes:" " length:1]];
if (data.length > 0 && !isSpace) {
NSString* sInvalid = [NSString stringWithUTF8String:[data bytes]];
// 从服务器收到的类似上一行的数据
NSData *dataa = [[sInvalid stringByReplacingOccurrencesOfString:@"\r\n" withString:@"\\r\\n"] dataUsingEncoding:NSUTF8StringEncoding];
responseObject = [NSJSONSerialization JSONObjectWithData:dataa options:self.readingOptions error:&serializationError];
} else {
return nil;
}