作為一名iOS開發(fā)者,AFN網(wǎng)絡請求框架是最為常用熟悉的第三方框架之一。GitHub鏈接跳轉AFN鏈接
作為一名開發(fā)者,本著知其然知其所以然的目的,逐步探究一下如此熱門的第三方網(wǎng)絡請求框架實現(xiàn)原理。
探究的AFN以3.X版本為主,摒棄了NSURLConnection方法,全部基于NSURLSession方法實現(xiàn)。
首先上一張AFN框架類結構組成

在AFN框架中,負責網(wǎng)絡請求通訊最重要的兩個類AFURLSessionManager、AFHTTPSessionManager。AFHTTPSessionManager又是繼承于AFURLSessionManager,進行了封裝。
AFURLRequestSerialization結構的類,主要用于網(wǎng)絡請求之前的操作配置,負責配置網(wǎng)絡請求的請求頭部、序列化請求參數(shù)
AFURLResponseSerialization結構的類,主要用于網(wǎng)絡請求之后的數(shù)據(jù)處理,針對不同的數(shù)據(jù)進行處理,比如JSON、XML、plist、圖片格式等數(shù)據(jù)。
附加功能類中,AFSecurityPolicy主要用于HTTPS環(huán)境下的認證安全請求通訊。如果是通過CA認證過的HTTPS訪問地址,使用AFN時只需要拼接上https://即可,AFN的網(wǎng)絡請求配置中默認使用CA認證訪問HTTPS地址;若是自簽的證書時,則需要當前類用于進行認證。
AFNetworkReachabilityManager,用于網(wǎng)絡狀態(tài)的監(jiān)聽,判斷是否有網(wǎng)絡,以及判斷網(wǎng)絡連接類型,比如蜂窩網(wǎng)絡或WiFi環(huán)境。但當前類無法判斷當前環(huán)境能否訪問服務器服務。其原理是利用主機的數(shù)據(jù)包發(fā)送。
接下來將按照結構目錄的順序,依次探究各個類在AFN框架中的作用以及實現(xiàn)原理。
該文章首次發(fā)表在 簡書:我只不過是出來寫寫代碼 博客,并自動同步至 騰訊云:我只不過是出來寫寫iOS 博客