首页 > Web开发 > 详细

AFNetworking 网络错误提示data转换字符串

时间:2016-11-15 19:40:13      阅读:428      评论:0      收藏:0      [点我收藏+]

AFN在进行网络交互时,有时候会碰到返回502、500、404的时候。后台的总需要你配合他查出问题所在。但是AFN在返回数据序列化时解析错误只会转成NSData类型的数据,如果直接扔给后台Data的数据显然有点不靠谱。所以可以在AFURLResponseSerialization.m中加上对data转成string的方法。方法如下:

在AFURLResponseSerialization.m中找到 “AFNetworkingOperationFailingURLResponseDataErrorKey”在其下方加上

#ifdef DEBUG

NSString * const AFNetworkingOperationFailingURLResponseStringErrorKey =  @"com.alamofire.serialization.response.error.string";

#endif

ps:主要是在debug状态下需要调试,所以加上环境的判断防止错误。

第一:

然后分别在- (BOOL)validateResponse:(NSHTTPURLResponse )response data:(NSData )data error:(NSError * __autoreleasing *)error 方法中在判断data的代码中有两处需要替换:

if (data) {

mutableUserInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] = data;

}

替换成、

if (data) {

mutableUserInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] = data;

#ifdef DEBUG

mutableUserInfo[AFNetworkingOperationFailingURLResponseStringErrorKey] = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

#endif

}

之后当你碰到网络错误时。AFN会把错误输出,可以搜索console中搜索com.alamofire.serialization.response.error.string:对应的就是data转成的字符串。

第二:

NSError *underError = error.userInfo[@"NSUnderlyingError"];

NSData *data=underError.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey];

NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSLog(@"%@", str);

AFNetworking 网络错误提示data转换字符串

原文:http://www.cnblogs.com/HMJ-29/p/6066631.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!