AFNetworking的一些理解

為什么要用AFNetworking?

1、帶block形式贡定, 內(nèi)部是任務隊列進行下載 而芥,就是對operation的一個封裝下載。

2耕姊、還對uikit 內(nèi)部的類進行類別形式添加方法(異步下載圖片)桶唐。

3、還可以檢測網(wǎng)絡狀態(tài)茉兰。

ASI 以前使用比較多得一個下載開源庫尤泽,現(xiàn)在已經(jīng)不維護了,ASI 使用的時候要導入很多庫 比較麻煩第一點规脸。


AFNetWorking處理網(wǎng)絡請求

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

所有的網(wǎng)絡請求,均有manager發(fā)起坯约。

取消任務

[manager.operationQueue cancelAllOperations];


擴展:

1、Session:中文有譯作時域的燃辖,就是指某個客戶端在訪問服務器起到停止訪問這一段的時間間隔被稱為時域鬼店。

2网棍、Cookie:由服務器發(fā)送給客服端黔龟,把Cookie的key:value值儲存在本地文件夾下,當下次請求的時候能夠直接發(fā)送Cookie獲得權限驗證


主要組成:

1:AFURLConnectionOperation

可以說是AFN最基礎的類滥玷。繼承自NSOperation類氏身,將網(wǎng)絡請求依附到一個operation上。從而讓我們能夠有效的控制并觀察一個網(wǎng)絡請求的創(chuàng)建惑畴、進行蛋欣、取消、完成如贷、?暫拖莼ⅲ恢復到踏、異常等問題及狀態(tài)。

2:AFHTTPRequestOperation

HTTP或HTTPS協(xié)議請求的AFURLConnectionOperation的子類尚猿。它封裝的可接受狀態(tài)碼和內(nèi)容的類型窝稿,判定一個請求結果是成功或失敗。

實際上對系統(tǒng)的HTTP網(wǎng)絡請求增加了幾個HTTP需要用到的參數(shù)凿掂。

3:AFHTTPRequestOperationManager

這個類是AFN類庫的核心類伴榔。它封裝完成了一種通用的模式,可以幫助我們輕松友好的完成請求的創(chuàng)建庄萎、響應的系列化踪少,網(wǎng)絡狀態(tài)的監(jiān)控以及安全策略以及每一個請求operation的管理(operation的相互依賴或狀態(tài)改變)。

4:AFURLSessionManager

iOS7 之后糠涛,蘋果增加了新的網(wǎng)絡請求類--NSURLSession援奢。AFN官方推薦iOS 7 或者 Mac OS X 10.9以上的,最好使用該類發(fā)起網(wǎng)絡請求脱羡,取代AFHTTPRequestOperationManager萝究。不過基于目前國內(nèi)app大都最低適配的 iOS6,該類的用途還不是太廣泛锉罐。NSURLSession的說明或者使用不再贅述帆竹。自行查看API文檔。以后有時間再加上該類的使用脓规。

5:AFNetworkReachabilityManager

網(wǎng)絡的連通狀態(tài)監(jiān)控以及網(wǎng)絡的類型栽连。實際是將蘋果官方提供的Reachability的類名和通知名更換了一下,防止和系統(tǒng)提供的類的通知名以及類名的沖突侨舆。

6:AFURLRequestSerialization

①:符合這個協(xié)議的對象用于處理請求秒紧,它將請求參數(shù)轉換為 query string 或是 entity body 的形式,并設置必要的 header挨下。

②:構建multipart請求熔恢。

7:AFURLResponseSerialization

遵循AFURLResponseSerialization協(xié)議的對象,用于驗證臭笆、序列化響應及相關數(shù)據(jù)叙淌,轉換為有用的形式,比如 JSON 對象愁铺、圖像鹰霍、甚至基于mantle的模型對象。

代碼請求過程:

使用AFNetworking發(fā)送請求茵乱、接收響應很簡單茂洒,只要如下幾步

1.創(chuàng)建AFHTTPRequestOperationManager對象

2.根據(jù)服務器響應內(nèi)容的不同,為AFHTTPRequestOperationManager對象指定不同的解析器瓶竭。

該對象默認的解析器要求服務器響應是JSON數(shù)據(jù)或Plist數(shù)據(jù)督勺。

如果服務器響應數(shù)據(jù)是其他格式的渠羞,則需要手動設置響應解析器。

3.如果需要發(fā)送GET請求智哀,調(diào)用AFHTTPRequestOperationManager對象的GET:parameters:success:failure:方法即可;

如果要發(fā)送POST請求,調(diào)用該對象的POST:parameters:success:failure:方法即可.兩個方法都可指定通信成功堵未、通信失敗的代碼塊。

4.在success:參數(shù)指定的代碼塊中處理服務器響應成功的正確數(shù)據(jù)盏触;在failure:參數(shù)指定的代碼塊中處理服務器響應的錯誤數(shù)據(jù)渗蟹。

基本架構:

首先,AFNetworking是封裝的NSURLSession的網(wǎng)絡請求赞辩。

其次雌芽,AFNetworking由五個模塊組成:

NSURLSession:網(wǎng)絡通信模塊(核心模塊) 對應 AFNetworking中的 AFURLSessionManager和對HTTP協(xié)議進行特化處理的AFHTTPSessionManager,AFHTTPSessionManager是繼承于AFURLSessionmanager的;

Security:網(wǎng)絡通訊安全策略模塊 ?對應 AFSecurityPolicy辨嗽;

Reachability:網(wǎng)絡狀態(tài)監(jiān)聽模塊 對應AFNetworkReachabilityManager世落;

Serialization:網(wǎng)絡通信信息序列化、反序列化模塊 對應 AFURLResponseSerialization糟需;

UIKit:對于IOSUIKit的擴展庫屉佳;

NSURLSession網(wǎng)絡請求的過程:

-->創(chuàng)建NSURLSessionConfig對象

-->用創(chuàng)建的config對象配置初始化NSURLSession

-->創(chuàng)建NSURLSessionTask對象并resume執(zhí)行,用delegate或者block回調(diào)返回數(shù)據(jù)洲押。

AFURLSessionManager封裝了上述網(wǎng)絡交互功能武花。

AFURLSessionManager請求過程:

1.初始化AFURLSessionManager。

2.獲取AFURLSessionManager的Task對象

3.啟動Task

AFURLSessionManager會為每一個Task創(chuàng)建一個AFURLSessionmanagerTaskDelegate對象杈帐,manager會讓其處理各個Task的具體事務体箕,從而實現(xiàn)了manager對多個Task的管理

初始化好manager后,獲取一個網(wǎng)絡請求的Task挑童,生成一個Task對象累铅,并創(chuàng)建了一個AFURLSessionmanagerTaskDelegate并將其關聯(lián),設置Task的上傳和下載delegate站叼,通過KVO監(jiān)聽download進度和upload進度


最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娃兽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子尽楔,更是在濱河造成了極大的恐慌投储,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翔试,死亡現(xiàn)場離奇詭異轻要,居然都是意外死亡复旬,警方通過查閱死者的電腦和手機垦缅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驹碍,“玉大人壁涎,你說我怎么就攤上這事凡恍。” “怎么了怔球?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵嚼酝,是天一觀的道長。 經(jīng)常有香客問我竟坛,道長闽巩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任担汤,我火速辦了婚禮涎跨,結果婚禮上,老公的妹妹穿的比我還像新娘崭歧。我一直安慰自己隅很,他們只是感情好,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布率碾。 她就那樣靜靜地躺著叔营,像睡著了一般。 火紅的嫁衣襯著肌膚如雪所宰。 梳的紋絲不亂的頭發(fā)上绒尊,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音仔粥,去河邊找鬼垒酬。 笑死,一個胖子當著我的面吹牛件炉,可吹牛的內(nèi)容都是我干的勘究。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼斟冕,長吁一口氣:“原來是場噩夢啊……” “哼口糕!你這毒婦竟也來了?” 一聲冷哼從身側響起磕蛇,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤景描,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后秀撇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體超棺,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年呵燕,在試婚紗的時候發(fā)現(xiàn)自己被綠了棠绘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖氧苍,靈堂內(nèi)的尸體忽然破棺而出夜矗,到底是詐尸還是另有隱情,我是刑警寧澤让虐,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布紊撕,位于F島的核電站,受9級特大地震影響赡突,放射性物質(zhì)發(fā)生泄漏对扶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一惭缰、第九天 我趴在偏房一處隱蔽的房頂上張望辩稽。 院中可真熱鬧,春花似錦从媚、人聲如沸逞泄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喷众。三九已至,卻和暖如春紧憾,著一層夾襖步出監(jiān)牢的瞬間到千,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工赴穗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留憔四,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓般眉,卻偏偏與公主長得像了赵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子甸赃,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容