Closed Vincentzzg closed 5 years ago
这次改的比较多,田大哥看下
改动的源头在于上图中的位置,走到这里其实已经无法拿到后请求原始的NSData类型的数据了,除非AFHTTPSessionManager的responseSerializer = [AFHTTPResponseSerializer serializer],因为AFHTTPResponseSerializer类型的序列化器没有对数据做类型转换,如果是其他类型的responseSerializer,data都已经相应的被转换成了对应的对象
所以,依次类推,针对不确定的类型,做了一些命名和类型上的修改
👌
@casatwy 还有几个问题没能解决 1、下面两处的responseString,严重依赖使用者的转换,有可能为空导致日志cotent为空
// 输出返回数据
CTURLResponse *CTResponse = [[CTURLResponse alloc] initWithResponseString:result[kCTApiProxyValidateResultKeyResponseString]
requestId:requestID
request:request
responseObject:result[kCTApiProxyValidateResultKeyResponseObject]
error:error];
CTResponse.logString = [CTLogger logDebugInfoWithResponse:(NSHTTPURLResponse *)response
responseObject:responseObject
responseString:result[kCTApiProxyValidateResultKeyResponseString]
request:request
error:error];
2、还有log部分,不是NSData的类型,我直接把object打印了,感觉有些不太合理
if ([responseObject isKindOfClass:[NSData class]]) {
[logString appendFormat:@"Raw Response String:\n\t%@\n\n", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]];
} else {
[logString appendFormat:@"Raw Response String:\n\t%@\n\n", responseObject];
}
3、CTURLResponse里面的实现,修改过之后self.content类型也不定,这里的转换是不是也需要改下?
- (NSData *)responseData
{
if (_responseData == nil) {
NSError *error = nil;
_responseData = [NSJSONSerialization dataWithJSONObject:self.content options:0 error:&error];
if (error) {
_responseData = [@"" dataUsingEncoding:NSUTF8StringEncoding];
}
}
return _responseData;
}
1和2我觉得问题不大
3这边我现在各种忙,我周末改一下~
嗯
感觉我可以安心的用了,感谢两位大神修改:)
@YearRen 我不是大神,Casa才是。 另外,网络框架是客户端工程中非常重要的框架,使用的话还是建议把框架的代码都看一下,了解具体的实现,以后使用的过程中如果出现了异常和错误,自己就可以有的放矢了。
感谢。我也是最近准备重构公司的项目,开始研究,我会一点一点跟代码的
由于CTApiProxy中dataTaskWithRequest返回的数据类型不可知,所以相应的修改了一些方法和参数的类型命名