使用AFNetworking遇到3840错误的解决方法

总结一个工作中遇到的坑。后端返回的JSON明明是成功,但是始终被解析为错误,并返回3840错误。这个错误通常是因为返回的数据格式不正确,但是抓包显示的确是JSON串,但是在JSON串之前有15行是空白的!!!!

开始认为是后端数据的问题,跟后端哥们调试了6个小时无果,最后还是得前端自己解决。第一个想法就是将返回的JSON文本去首尾空行空格再进行序列化。于是,在失败的block中拿到请求结果的字符串

NSString *responseStr = operation.responseString;

这个opertion变量来自AFN框架的下面这个方法

- (AFHTTPRequestOperation *)POST:(NSString *)URLString
                      parameters:(id)parameters
                         success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
                         failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
    AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"POST" URLString:URLString parameters:parameters success:success failure:failure];

    [self.operationQueue addOperation:operation];

    return operation;
}

通过下面这个方法过滤字符串中的换行和空格(感谢woaifen3344)

- (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
    if (jsonString == nil) {
        return nil;
    }
    
    jsonString = [jsonString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    NSError *err;
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
                                                        options:NSJSONReadingMutableContainers
                                                          error:&err];
    if(err) {
        NSLog(@"json解析失败:%@",err);
        return nil;
    }
    return dic;
}

通过这个方法返回的就是正常解析的OC字典了,ru guo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,552评论 25 708
  • 想起了地皮菜炒鸡蛋。 现在外面下着小雨,淅淅沥沥的,冷风不断地钻进来,于是躺下,盖了被子,就想到了地皮...
    冰眉铁面阅读 230评论 4 3
  • 夜晚温度正正好,微微的春风,不像白天那般燥热,也不似前几日的寒冷,走在路上,不仅想起了诗经里的《子衿》……
    自由和安阅读 334评论 3 1
  • 这是一本教导如何深入了解自己并取得个人化成功的指导手册。 在阅读的过程中,我惊讶地发现这本书居然还有配...
    童亨书斋阅读 440评论 0 0