AFNetworking有5個(gè)模塊:
一、NSURLSession 網(wǎng)絡(luò)請求模塊
AFHTTPSessionManager
繼承自AFURLSessionManager
- post
- get
- 上傳
AFURLSessionManager
管理所有的請求,設(shè)置了NSURLSessionTaskDelegate, NSRULSessionDataDelegate,NSURLSessionDownloadDelegate實(shí)現(xiàn)證書合法性校驗(yàn),數(shù)據(jù)傳輸進(jìn)度檢測,數(shù)據(jù)請求成功/失敗的回調(diào)。
使用Runtime用af_suspend替換 suspend, 用af_resume替換了resume 當(dāng)調(diào)用者兩個(gè)方法時(shí)往上層發(fā)送通知 AFNetworkingTaskDidSuspendNotification AFNetworkingTaskDidResumeNotification
- 請求服務(wù)器數(shù)據(jù)
- 上傳數(shù)據(jù)
- 多線程下載數(shù)據(jù)
二、Reachability 監(jiān)測網(wǎng)絡(luò)狀態(tài)模塊
AFNetworkReachabilityManager
三、Security 安全策略模塊
AFSecurityPolicy
iOS項(xiàng)目將服務(wù)器端的證書保存導(dǎo)入到項(xiàng)目中,AFN根據(jù)項(xiàng)目中的服務(wù)器證書來進(jìn)行驗(yàn)證,驗(yàn)證服務(wù)器,保證訪問服務(wù)器的安全性。
驗(yàn)證證書的模式有三種:
- AFSSLPinningModeNone 不驗(yàn)證
- AFSSLPinningModePublicKey 只驗(yàn)證公鑰
- AFSSLPinningModeCertificate 驗(yàn)證證書的所有內(nèi)容
四、Serialization 序列化
AFURLRequestSerialization
AFURLResponseSerialization
五、UIKit UI相關(guān)的一些類目
原理概述
AFNetworking 是對NSURLSessionTask的封裝。AFHTTPSessionManager繼承AFURLSessionManager對網(wǎng)絡(luò)請求進(jìn)行管理,使用AFURLRequestSerialization對網(wǎng)絡(luò)請求進(jìn)行封裝,使用AFURLResponseSerialization對響應(yīng)體進(jìn)行處理,使用AFSecurityPolicy對服務(wù)器證書進(jìn)行校驗(yàn)。支持HTTPS協(xié)議,支持本地證書和服務(wù)器證書進(jìn)行對比驗(yàn)證。AFN數(shù)據(jù)傳遞主要使用block和notifacation方式。
請求過程
- GET/POST方法調(diào)用抽象的請求方法,指明請求參數(shù),調(diào)用全能數(shù)據(jù)請求方法,指明數(shù)據(jù)請求方式和參數(shù)。
- 對請求進(jìn)行序列化,如果序列化失敗,就執(zhí)行failure block。
- 為每一個(gè)NSURLSessionDataTask的dataTask增加代理。
- 對每一個(gè)NSURLSessionDataTask的dataTask增加代理的具體實(shí)現(xiàn),對dataTask設(shè)置請求之后的回調(diào)delegate和處理block。