afn原理 ios iOS開發 AFN的基本使用

2021-10-13 02:00:16 字數 3371 閱讀 4885

因為專案中需要用到一些第三方框架來搞定基本需求,再次總結一番.我的專案是瀏覽器工具,所以對網路請求處理需要做很多特別處理,這也就構成了對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,提供了與解析資料相關的操作介面...