因為專案中需要用到一些第三方框架來搞定基本需求,再次總結一番.我的專案是瀏覽器工具,所以對網路請求處理需要做很多特別處理,這也就構成了對afn及asi庫的深究;
1.afn全稱為:afnetworking , 是乙個構建在nsurlconnection,nsoperation以及其他熟悉的founation技術之上的乙個第三方網路框架.其對網路請求部分做了很好的封裝,並且擁有良好架構,豐富的api,以及模組化構建方式;
2.afn主要使用在2個場景中
(1):傳送網路請求
(2):實時監測網路狀態
afhttprequestoperationmanager:內部封裝了nsurlconnection,網路請求管理類,用來負責傳送網路請求;
afhttpsessionmanager :內部封裝的是nsurlsession,其內容同上,蘋果推薦使用nsurlsession;
兩個網路請求管理類定義的api全完相同(此處限制於get請求):
//⭐️nsurlconnection--mark
[[afhttprequestoperationmanager manager] get:nil parameters:nil success:^(afhttprequestoperation *operation, id responseobject) failure:^(afhttprequestoperation *operation, nserror *error) failure:^(nsurlsessiondatatask *task, nserror *error) ];主要的工具類:
afnetworkreachabilitymanager.h :實時監測網路狀態改變的管理類.
afsecuritypolicy.h :https 需要使用.
afurlrequestserialization:資料解析的時候會使用.
afhttprequestserializer: 萬能解析器/對伺服器返回的資料不做任務處理.
afjsonresponseserializer: json解析器.
afxmlparserresponseserializer: xml解析器.
afhttprequestoperationmanager :對nsurlconnection的封裝.
afhttpsessionmanager :對nsurlsession的封裝.
一.\afhttpsessionmanager 用法:
建立管理者:
設定管理者的資料解析型別,預設為json格式的解析,可手動修改為其他型別,如xml:
manager.responseserializer = [afxmlparserresponseserializer serializer];
傳送請求 <1.首先要明確傳送的是什麼型別的請求(get/post/head...)
2. afn3.0之後的網路介面比原來的多了乙個引數-->網路進度》:
nslog(@"失敗:%@",error);
⚡️⚡️⚡️afn預設情況下就是支援https訪問的,但是如果用https的方式訪問未受信任的**便會報錯,解決方案:
修改對ssl的檢測:
afn3.0之前:
manager.securitypolicy.allowinvalidcertificates = yes;
afn3.0之後
manager.securitypolicy.validatesdomainname = no;
五\.afn和asi的區別
1--首先對比兩者的底層實現:
(1).afn的底層基於oc的nsurlconnection和nsurlsesson
(2).asi的底層則是基於純c語言的cfnetwork框架
(3).asi的執行效能要高於afn
2--對伺服器返回的資料處理:
(1).asi沒有直接提供對伺服器資料處理的方式,直接返回data\string
(2).afn提供了多種對服務資料的處理的方式
--mark json處理;
--mark xml處理;
--mark 其他處理;
3--監聽請求的過程
(1).afn提供了success和failure兩個block來監聽請求的過程(3.0之前只能監聽成功和失敗~~;3.0之後新增了進度)
--mark success:請求成功後呼叫
--mark failure:請求失敗後呼叫
(2).asi提供了3套方案,每一套方案都能監聽請求的完整過程 -->(監聽請求開始,接收到響應頭資訊,接收到具體資料,接收完畢,請求失敗/成功)
--mark 成為**.遵守協議,實現協議中的**方法
--mark 成為**,不遵守協議,自定義**方法
--mark 設定block
(1).afn
--mark 不容易實現斷點續傳
(2).asi
--mark 容易實現斷點續傳
ps:asi提供了更多的使用功能
(1):控制請求動畫是否在請求過程中轉;
(2):可以輕鬆設定請求之間的依賴:誒乙個請求都是乙個nsoperation物件
(3):可以統一管理所有請求(還專門提供了乙個叫做asinetworkqueue來管理多有的請求物件)
--mark 暫停\恢復\取消所有的請求
afn原理 ios iOS AFN實現原理
nsurlsessiondatatask datataskwithrequest nsurlrequest request completionhandler void nsurlresponse response,id responseobject,nserror error completion...
相機自動對焦AF原理
相機自動對焦af原理 af效能是判斷相機好壞的重要指標,主要從準確度和速度兩個方面來進行考察,本文將介紹自動對焦的幾種方式。一 凸透鏡成像原理 二 三種對焦方法 有公式在手,只要給相機安個測距儀就好了,測距儀的精度越高對焦就越準,成像就越清晰,在這種想法的驅動下,主動式對焦就應運而生了,在大部分不計...
AFN原理及常用方法
nsurlsession,主要物件nsurlsession物件進行了進一步的封裝,包含以下核心的類 reachability,提供了與網路狀態相關的操作介面,包含以下核心的類 security,提供了與安全性相關的操作介面,包含以下核心的類 serialization,提供了與解析資料相關的操作介面...