AFNetworking實(shí)現(xiàn)原理

AFNetworking有5個(gè)模塊:

一、NSURLSession 網(wǎng)絡(luò)請求模塊

AFHTTPSessionManager

繼承自AFURLSessionManager

  1. post
  2. get
  3. 上傳
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

  1. 請求服務(wù)器數(shù)據(jù)
  2. 上傳數(shù)據(jù)
  3. 多線程下載數(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)證證書的模式有三種:
  1. AFSSLPinningModeNone 不驗(yàn)證
  2. AFSSLPinningModePublicKey 只驗(yàn)證公鑰
  3. 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方式。

請求過程

  1. GET/POST方法調(diào)用抽象的請求方法,指明請求參數(shù),調(diào)用全能數(shù)據(jù)請求方法,指明數(shù)據(jù)請求方式和參數(shù)。
  2. 對請求進(jìn)行序列化,如果序列化失敗,就執(zhí)行failure block。
  3. 為每一個(gè)NSURLSessionDataTask的dataTask增加代理。
  4. 對每一個(gè)NSURLSessionDataTask的dataTask增加代理的具體實(shí)現(xiàn),對dataTask設(shè)置請求之后的回調(diào)delegate和處理block。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容