项目中网络请求库用的AFNetworking,今天有时间说下自己的理解

以上是AFNetworking的主要目录,如果要自己定制封装请求类,一般继承AFHTTPSessionManager即可, 可继承自NSObject,发请求还需用AFHTTPSessionManager中的POST,GET 等方法,AFN本质上是用NSURLSession加载数据,NSURLSessionTask开启任务,开讲AFN前要先了解下这两个东东
NSURLSession
功能:
1.通过URL将数据下载到内存
2. 通过URL将数据下载到文件系统
3. 将数据上传到指定URL
4.在后台完成上述功能
传输流程
1. 如果要想用用NSURLSession传输数据要先创建一个NSURLSessionConfiguration参考,所以请求类中在初使化的时候即创建了NSURLSession <AFURLSessionManager initWithSessionConfiguration>
2. 当请求类发出POST请求时,NSURLSession根据request生成加载任务,NSURLSessionDataTask 开启加载数据的任务


3. 开启加载数据任务后,进入到NSURLSessionDataDelegate的回调方法中,将接收 到的数据appendData<AFURLSessionManager>, 在回调方法中调用自定义Delegate的委托方法, 最后给block <completionHandler>传值


至此便将NSURLSession 请求得出的结果用block 传了出去
网友评论