AFNetworking 小结

1,661 阅读1分钟

AFNetworking 实现原理

AFNetworking 是对NSURLSessionTask的封装AFHTTPSessionManager继承

AFURLSessionManager对网络请求进行管理,使用AFURLRequestSerialization对网
络数据进行封装,使用AFURLResponseSerialization对响应体进行处理,使用AFSecurityPolicy
对服务器证书进行校验.支持HTTPS协议,支持本地证书和服务器证书进行对比验证,
AFN数据传递主要使用block和notification方式

请求过程

1:get/post方法调用抽象的请求方式,指明请求参数,调用全能数据请求方法,指明
数据请求方式和参数
2:对请求进行序列化,如果序列化失败,就执行failure block
3:为每一个NSURLSessionDataTask的dataTask增加代理
4:对每一个NSURLSessionDataTask的dataTask增加代理的具体实现,对dataTask设
置请求之后的回调delegate和处理block	

一:NSURLSession网络请求模块

AFHTTPSessionManager
继承自AFURLSessionManager
1:post
2:get
3:上传

AFURLSessionManager 
管理所有请求,设置NSURLSessionTaskDelegate
NSURLSessionDataDelegate,NSURLSessionDownloadDelegate实现数据传输进度检
测,数据请求成功/失败的回调
使用runtime用af_suspend替换resume,当调用这两个方法时,往上层发送通知,
NFNetworkingTaskDidSuspendNotification
AFNetWorkingTaskDidResumeNotification
1:请求服务器数据
2:上传数据
3:多线程下载数据

Reachability 监控网络模块

AFNetworkReachabilityManager

Security 安全策略模块

AFSecurityPolicy
ios项目将服务器的证书保存导入到项目中,AFN根据项目中的服务器证书进行验证
,验证服务器,保证访问服务器的安全性
验证证书的模式有三种
1:AFSSLPinningModeNone 不验证
2:AFSSLPinningModePublicKey 只验证公钥
3:AFSSLPinningModeCertificate 验证证书的所有内容

Serialization 序列化

1:AFURLRequestSerialization
2:AFURLResponseSerialization