AFNetwork 3.x 的所有開發(fā)中常用基礎(chǔ)介紹

前言:第三方網(wǎng)絡(luò)請求框架中AFNetwork 3.x收歡迎程度相當(dāng)高的:

由于iOS 7 和 Mac OS X 10.9 Mavericks 中一個顯著的變化就是對 Foundation URL 加載系統(tǒng)的徹底重構(gòu)。而且現(xiàn)在AFN 3.x版本完全摒棄了NSURLConnection,而使用了NSURLSession。

下載方式:1、直接到github官網(wǎng)上搜索"AFN",看到如圖上圖這樣的受歡迎程度高的自然就是。2、使用cocoapods集成到你的項目中去。


內(nèi)容大綱:

1、AFN 3.X的基本使用

2、AFN 3.X的文件下載

3、AFN 3.X的文件上傳

4、AFN 3.X的使用技巧

5、AFN 3.X 序列化相關(guān)

6、AFN 3.X 網(wǎng)絡(luò)監(jiān)聽

正文:

1、AFN 3.X的基本使用

1-1、步驟:

1-1-1、創(chuàng)建會話管理者

是AFHTTPSessionManager作為會話管理者,用manager創(chuàng)建

不是AFURLSessionManager,而且AFURLSessionManager無manager方法

1-1-2、開始請求,URL都不需要自己創(chuàng)建了。

第一個參數(shù):請求路徑(NSString

以前: http://120.25.226.186:32812/video?type=JSON

http://120.25.226.186:32812/login?username=520it&pwd=520it&type=JSON

協(xié)議頭+主機地址+接口名稱+?+參數(shù)&參數(shù)

現(xiàn)在:http://120.25.226.186:32812/video

http://120.25.226.186:32812/login

協(xié)議頭+主機地址+接口名稱

第二個參數(shù):要傳遞的參數(shù)(字典)

第三個參數(shù): progress:進度 nil

第四個參數(shù): success:成功,請求成功的回調(diào)

task:請求任務(wù)

responseObject:響應(yīng)體信息,而且內(nèi)部已經(jīng)進行了序列化處理

第五個參數(shù):failure 請求失敗的回調(diào)

task:請求任務(wù)

error:如果失敗,那么error有值

1-2、源碼展示

2、AFN 3.X的文件下載

2-1、步驟:

第一個參數(shù):請求對象

第二個參數(shù):progress 進度信息的回調(diào)

downloadProgress

completedUnitCount:已經(jīng)下載的數(shù)據(jù)大小

totalUnitCount":數(shù)據(jù)的總大小

第三個參數(shù):destination 有返回值

傳遞一個目標(biāo)路徑(NSURL),AFN內(nèi)部會自動執(zhí)行剪切處理

targetPath:臨時路徑

response: 響應(yīng)頭信息

第四個參數(shù):completionHandler 下載完成之后調(diào)用

2-2、源碼展示

3、AFN 3.X的文件上傳

4、AFN 3.X的使用技巧

在實際開發(fā)中,是不會在控制器中直接調(diào)用框架的網(wǎng)絡(luò)請求,比如:如果在網(wǎng)絡(luò)請求的某個控制器中直接調(diào)用了這個AFN框架,會出現(xiàn)后期不好維護的情況,比如一般企業(yè)開發(fā)的app項目會有十來個二十來 個ViewController,大部分控制器都會需要活數(shù)據(jù),也就是需要通過請求網(wǎng)絡(luò)來獲取數(shù)據(jù),那么在多個控制器都導(dǎo)入和使用了AFN框架,而實際開發(fā)需求可能會讓你換掉網(wǎng)絡(luò)請求框架,要將這個AFN框架換成 ASI框架,這樣可想而知,作為碼農(nóng)都要哭了。

那么可行性方案,也是企業(yè)開發(fā)中常常會用到的方法:

在需要網(wǎng)絡(luò)請求的控制器和網(wǎng)絡(luò)請求框架之間建立一個工具類,這個工具類可以是類別,也可以是普通類,然后將網(wǎng)絡(luò)請求的方法簡易封裝起來,最好能應(yīng)對不同情況和不同的數(shù)據(jù)的請求,并且能實現(xiàn),當(dāng) 我將AFN框架替換成ASI框架的時候,控制器里調(diào)用的這個工具類的方法完全不需要改變,要改變的只是工具類中將AFN替換成ASI框架??傊?,創(chuàng)建一個網(wǎng)絡(luò)請求工具類,能夠讓所有的控制器不依賴底層框 架,只依賴這個工具類。

5、AFN 3.X 序列化相關(guān)

5-1、JSON解析,內(nèi)部會自動對JSON數(shù)據(jù)進行反序列化處理,通過響應(yīng)頭信息返回字典對象(可以打印出其類型和字典元素值查看)

不需要手動設(shè)置解析方式。

5-2、XML解析需要協(xié)議輔助解析XML,當(dāng)然也可以使用我的封裝好的能實現(xiàn)XML直接轉(zhuǎn)模型字典的工具類"HYXMLParser"。

需要告訴AFN以XML的方式解析數(shù)據(jù)。

GET方法中要用有NSXMLParser參數(shù)的解析方法。

5-3、直接返回服務(wù)器的HTML數(shù)據(jù)格式,記得將返回的數(shù)據(jù)要設(shè)置Encoding為NSUTF8StringEncoding,然后直接輸出。

需要手動設(shè)置告訴AFN解析方式為不解析,即AFHTTPResponseSerializer serializer。

5-4、對于返回的是NSData格式的數(shù)據(jù),比如網(wǎng)絡(luò)上的返回的圖片、視頻等資源二進制數(shù)據(jù)。

6、AFN 3.X 網(wǎng)絡(luò)監(jiān)聽

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,306評論 6 13
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,769評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • AFN什么是AFN全稱是AFNetworking,是對NSURLConnection、NSURLSession的一...
    醉葉惜秋閱讀 1,337評論 0 0
  • 突然就想起好友列表里有這么一位好友,每次發(fā)照片他總是會在瀏覽了無數(shù)次,空間訪客記錄顯示了好多次訪問之后評論:你這照...
    木易銘閱讀 406評論 0 1

友情鏈接更多精彩內(nèi)容