作為一名iOS開發(fā)者蝗拿,AFN網(wǎng)絡(luò)請(qǐng)求框架是最為常用熟悉的第三方框架之一晾捏。GitHub鏈接跳轉(zhuǎn)AFN鏈接
作為一名開發(fā)者蒿涎,本著知其然知其所以然的目的,逐步探究一下如此熱門的第三方網(wǎng)絡(luò)請(qǐng)求框架實(shí)現(xiàn)原理惦辛。
探究的AFN以3.X版本為主劳秋,摒棄了NSURLConnection方法,全部基于NSURLSession方法實(shí)現(xiàn)。
首先上一張AFN框架類結(jié)構(gòu)組成
在AFN框架中玻淑,負(fù)責(zé)網(wǎng)絡(luò)請(qǐng)求通訊最重要的兩個(gè)類AFURLSessionManager嗽冒、AFHTTPSessionManager。AFHTTPSessionManager又是繼承于AFURLSessionManager补履,進(jìn)行了封裝添坊。
AFURLRequestSerialization結(jié)構(gòu)的類,主要用于網(wǎng)絡(luò)請(qǐng)求之前的操作配置箫锤,負(fù)責(zé)配置網(wǎng)絡(luò)請(qǐng)求的請(qǐng)求頭部贬蛙、序列化請(qǐng)求參數(shù)
AFURLResponseSerialization結(jié)構(gòu)的類,主要用于網(wǎng)絡(luò)請(qǐng)求之后的數(shù)據(jù)處理谚攒,針對(duì)不同的數(shù)據(jù)進(jìn)行處理阳准,比如JSON、XML馏臭、plist野蝇、圖片格式等數(shù)據(jù)。
附加功能類中括儒,AFSecurityPolicy主要用于HTTPS環(huán)境下的認(rèn)證安全請(qǐng)求通訊绕沈。如果是通過CA認(rèn)證過的HTTPS訪問地址,使用AFN時(shí)只需要拼接上https://即可帮寻,AFN的網(wǎng)絡(luò)請(qǐng)求配置中默認(rèn)使用CA認(rèn)證訪問HTTPS地址七冲;若是自簽的證書時(shí),則需要當(dāng)前類用于進(jìn)行認(rèn)證规婆。
AFNetworkReachabilityManager澜躺,用于網(wǎng)絡(luò)狀態(tài)的監(jiān)聽,判斷是否有網(wǎng)絡(luò)抒蚜,以及判斷網(wǎng)絡(luò)連接類型掘鄙,比如蜂窩網(wǎng)絡(luò)或WiFi環(huán)境。但當(dāng)前類無法判斷當(dāng)前環(huán)境能否訪問服務(wù)器服務(wù)嗡髓。其原理是利用主機(jī)的數(shù)據(jù)包發(fā)送操漠。
接下來將按照結(jié)構(gòu)目錄的順序,依次探究各個(gè)類在AFN框架中的作用以及實(shí)現(xiàn)原理饿这。
該文章首次發(fā)表在 簡(jiǎn)書:我只不過是出來寫寫代碼 博客浊伙,并自動(dòng)同步至 騰訊云:我只不過是出來寫寫iOS 博客