今天粗略的学习一下AFNetworking 的源码
一、AF 主要包括5个模块:
1、网络通信模块(最核心)(AFURLSessionManager、AFHTTPSessionManager)
2、网络状态监听模块(Reachability)
3、网络通信安全策略模块(Security)
4、网络通信信息序列化/反序列化模块(Serialization)
5、对于iOS UIkit库的拓展(UIKit)
二、主要了解一下网络通信模块-AFURLSessionManager与AFHTTPSessionManager
AFHTTPSessionManager是继承AFURLSessionManager的,相当于对AFURLSessionManager的再次封装。
1)AFHTTPSessionManager 发起请求主要分为以下步骤:
1、首先会调用他的 三个初始化方法
+ (instancetype)manager;
- (instancetype)initWithBaseURL:(nullable NSURL *)url;
- (instancetype)initWithBaseURL:(nullable NSURL *)url
sessionConfiguration:(nullable NSURLSessionConfiguration *)configuration (如果入参configuration为nil,则调用NSURLSessionConfiguration的defaultSessionConfiguration方法,创建一个会话配置,并使用该配置创建一个会话对象,同时还初始化了安全策略、锁、返回数据解析器(JSON 数据解析器)等属性。 )
2 、当我们调用AFHTTPSessionManager 的get 方法时,请求开始。 get 方法会调用dataTaskWith ….方法
3、 AFHTTPSessionManager 创建NSMutableURLRequest (设置 HTTP header,之后格式化请求参数,设置参数的编码类型。)
4、 AFURLSessionManager 使用 NSMutableRequest 创建 NSURLSessionDataTask
5、 AFURLSessionManager 设置 NSURLSessionDataTask 的delegate (AFURLSessionManagerTaskDelegate 接管了 NSURLSessionTaskDelegate, NSURLSessionDataDelegate, NSURLSessionDownloadDelegate 的各种回调,然后做内部处理。)
6、 调用 NSURLSessionDataTask 的resume 方法, 开始执行请求
7、 AFURLSessionManagerTaskDelegate 的方法里处理网络请求回调的数据
8、 AFURLSessionManager清理 NSURLSessionDataTask 的配置
9、AFHTTPSessionManager 的Get请求结束
2) AFURLSessionManager
初始化方法
1、- (instancetype)initWithBaseURL:(nullable NSURL *)url
sessionConfiguration:(nullable NSURLSessionConfiguration *)configuration
2、dataTaskWithRequest ....... 方法
3、接下来的流程基本和AFHTTPSessionManager流程一样,不过多叙述.
网友评论