AFNetworking有5个模块:
一、NSURLSession 网络请求模块
AFHTTPSessionManager
继承自AFURLSessionManager
- post
- get
- 上传
AFURLSessionManager
管理所有的请求,设置了NSURLSessionTaskDelegate, NSRULSessionDataDelegate,NSURLSessionDownloadDelegate实现证书合法性校验,数据传输进度检测,数据请求成功/失败的回调。
使用Runtime用af_suspend替换 suspend, 用af_resume替换了resume 当调用者两个方法时往上层发送通知 AFNetworkingTaskDidSuspendNotification AFNetworkingTaskDidResumeNotification
- 请求服务器数据
- 上传数据
- 多线程下载数据
二、Reachability 监测网络状态模块
AFNetworkReachabilityManager
三、Security 安全策略模块
AFSecurityPolicy
iOS项目将服务器端的证书保存导入到项目中,AFN根据项目中的服务器证书来进行验证,验证服务器,保证访问服务器的安全性。
验证证书的模式有三种:
- AFSSLPinningModeNone 不验证
- AFSSLPinningModePublicKey 只验证公钥
- AFSSLPinningModeCertificate 验证证书的所有内容
四、Serialization 序列化
AFURLRequestSerialization
AFURLResponseSerialization
五、UIKit UI相关的一些类目
原理概述
AFNetworking 是对NSURLSessionTask的封装。AFHTTPSessionManager继承AFURLSessionManager对网络请求进行管理,使用AFURLRequestSerialization对网络请求进行封装,使用AFURLResponseSerialization对响应体进行处理,使用AFSecurityPolicy对服务器证书进行校验。支持HTTPS协议,支持本地证书和服务器证书进行对比验证。AFN数据传递主要使用block和notifacation方式。
请求过程
- GET/POST方法调用抽象的请求方法,指明请求参数,调用全能数据请求方法,指明数据请求方式和参数。
- 对请求进行序列化,如果序列化失败,就执行failure block。
- 为每一个NSURLSessionDataTask的dataTask增加代理。
- 对每一个NSURLSessionDataTask的dataTask增加代理的具体实现,对dataTask设置请求之后的回调delegate和处理block。
网友评论