AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持。如果你的项目以前使用过这些API,建议您立即升级到基于 NSURLSession 的API的AFNetworking的版本
弃用的类
下面的类已从AFNetworking 3.0中废弃:
AFURLConnectionOperation
AFHTTPRequestOperation
AFHTTPRequestOperationManager
修改的类下面的类包含基于NSURLConnection的API的内部实现。他们已经被使用NSURLSession重构:
UIImageView+AFNetworking
UIWebView+AFNetworking
UIButton+AFNetworking
代码的迁移:关于AFHTTPRequestOperationManager的废弃,将前去使用AFHTTPSessionManager,之中的属性并没有多大的变化
关于AFHTTPRequestOperation的迁移废弃,同样使用AFHTTPSessionManager即可
1. AFHTTPSessionManager 继承 AFURLSessionManager[内部封装的是 NSURLSession,网络请求管理类,用来负责发送网络请求,是使用做多的一个类.]
AFHTTPSessionManager所需属性
requestSerializer:请求参数序列化类型 [AFHTTPSessionManager manager].requestSerializer = [AFJSONRequestSerializer serializer];
responseSerializer:响应结果序列化类型 [AFHTTPSessionManager manager].responseSerializer = [AFXMLParserResponseSerializer serializer];//响应返回的是XML解析
AFURLSessionManager
所需属性
securityPolicy:用于验证HTTPS请求的证书 [AFHTTPSessionManager manager].securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
2. AFN根据 response.MIMEType 来判断服务器返回数据的类型. 如果类型不匹配,但是又是JSON数据,解决方案:
1.改变解析器类型为:万能解析器 ---> 手动解析JSON
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
2.改变判断条件的类型,以使类型匹配,acceptableContentTypes默认情况下无 text/plain 类型
manager.responseSerializer.acceptableContentTypes =[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/plain",@"text/html",@"text/xml", nil];
注: 如果没有使用第三方框架(CocoaPods)来管理第三方框架,可以直接修改第三方框架的源代码.
一般在开发中,不要随意修改第三方源码.
未完待续......
比较好的解析参考:AFNetworking的常用方法较详