一、AFNetworking整體框架是怎樣的 1、UIKit集成模塊 UIKit 2、請求序列化 Serialization 3、響應序列化 Serialization 4、會話 NSURLSession AFURLSessionManager最核心 子類:AFHTTPSessionManager ...
一、AFNetworking整體框架是怎樣的
1、UIKit集成模塊 UIKit
2、請求序列化 Serialization
3、響應序列化 Serialization
4、會話 NSURLSession AFURLSessionManager最核心 子類:AFHTTPSessionManager
6、網路安全模塊 Security
7、網路監聽 Reachability
會話NSURLSession模塊
NSURLSession
- AFURLSessionManager:最核心模塊
- AFHTTPSessionManager:繼承 AFURLSessionManager 使用頻率最高
- AFHTTPSessionManager包含有:
-
- AFURLResponseSerialization:響應序列化,負責將網路請求的結果解析
- AFURLRequestSerialization:請求序列化負,責根據傳遞參數組裝、拼接最終轉化出的一個結果
面試題:
AFURLSessionManage都負責哪些工作
- 創建和管理NSURLSession、NSURLSessionTask
- 實現NSURLSessionDelegate等協議的代理方法
- 引入AFSecurityPolicy保證請求安全
- 引入AFNetworkReachabilityManager監控網路狀態
發送一個Get方式的HTTP請求
1、調用get方法、內部使用 NSURLSessionDataTask 來實現
2、requestWithMethed 請求序列化、字典轉換成json字元串
3、dataTaskWithRequest 調用系統方法、給dataTask 設置代理給 AFURLSessionManagenTaskDelegate
驗證證書合法性的代碼:
SecTrustRef
SecTrustRef
這是一個需要驗證的信任對象,包含待驗證的證書和支持的驗證方法等.
SecTrustResultType
表示驗證結果。其中 kSecTrustResultProceed表示serverTrust驗證成功,且該驗證得到 了用戶認可(例如在彈出的是否信任的alert框中選擇always trust)。 kSecTrustResultUnspecified表示 serverTrust驗證成功,此證書也被暗中信任了,但是用 戶並沒有顯示地決定信任該證書。 兩者取其一就可以認為對serverTrust驗證成功。
SecTrustEvaluate
證書校驗函數,在函數的內部遞歸地從葉節點證書到根證書驗證。
需要驗證證書本身的 合法性(驗證簽名完整性,驗證證書有效期等);
驗證證書頒發者的合法性(查找頒發者 的證書並檢查其合法性,這個過程是遞歸的).而遞歸的終止條件是證書驗證過程中遇到 了錨點證書(錨點證書:嵌入到操作系統中的根證書,這個根證書是權威證書頒發機構頒 發的自簽名證書).
上面所說的只是一般的校驗方法,那麼在有的客戶端中,為了確定服務端返回的證書是否是自己所需要的證書,這時我們需要在客戶端中導入本地證書。
NSURLAuthenticationChallenge
(NSURLProtectionSpace *)protectionSpace;
(NSURLCredential *)proposedCredential;
(NSInteger)previousFailureCount;
(NSURLResponse *)failureResponse;
(NSError *)error;
NSURLProtectionSpace
NSURLAuthenticationChallenge中 的一個屬性NSURLProtectionSpace這是許可權認證的核心,它通常被稱為保護空間,表示需要認證的伺服器或者域,它定義了一系列的約束去告訴我們需要向伺服器提供什麼樣的 認證,這個保護空間含有以下幾個信息:
其中authenticationMethod中包含的認證類型如下
NSURLProtectionSpaceHTTP//_http協議
NSURLProtectionSpaceHTTPs//https協議
NSURLProtectionSpaceFTP//ftp協議
NSURLProtectionSpaceHTTPProxy//http代理
NSURLProtectionSpaceHTTPSProxy//https代理
NSURLProtectionSpaceFTPProxy//ftp代理
NSURLProtectionSpacesockSProxy//socks代理
NSURLAuthenticationMethodDefault//協議的預設身份認證
//http的basic認證,等同於NSURLAuthenti
NSURLAuthenticationMethodHTTPBasic
cationMethodDefault
NSURLAUthenticationMethodHTPDigest//htt摘要認證
NSURLAuthenticationMethodHTMLForm//htm表單認證
NSURLAUthenticatioMethodlnrtifct,適用協議
//ServerTrust認證,適用於任何協議
NSURLAuthenticationMethodserverTrust
AFN 緩存模塊對比SD
●AFN圖片緩存是設定2個臨界值,最大存儲值和清理後保留的緩存值。到達最大值則清理最早存入的圖片。直到達到清理後需要留存的臨界值為止。只以臨界值為節點清理。
●SD圖片緩存很明顯是願意犧牲空間來換時間,能多存點就多存點。