iOS開發之網路編程--1、AFNetwork 3.x 的所有開發中常用基礎介紹,iosafnetwork
前言:第三方網路請求架構中AFNetwork 3.x收歡迎程度相當高的:
由於iOS 7 和 Mac OS X 10.9 Mavericks 中一個顯著的變化就是對 Foundation URL 載入系統的徹底重構。而且現在AFN 3.x版本 完全摒棄了NSURLConnection,而使用了NSURLSession。
關於NSURLConnection和NSURLSession的用法,讀者可以閱讀本人寫的很多前幾篇博文。
下載方式:1、直接到github官網上搜尋"AFN",看到這樣的受歡迎程度高的自然就是。2、使用cocoapods整合到你的項目中去,關於cocoapods的安裝和使用方法,請讀者閱讀本人的兩篇博文:《CocoaPods的安裝(圖文並茂)OS X 10.11 系統》和《CocoaPods的使用(圖文並茂)OS X 10.11 系統》
內容大綱:
- 1、AFN 3.X的基本使用
- 2、AFN 3.X的檔案下載
- 3、AFN 3.X的檔案上傳
- 4、AFN 3.X的提示
- 5、AFN 3.X 序列化相關
- 6、AFN 3.X 網路監聽(不難)
本文:
1、AFN 3.X的基本使用
1-1、步驟:
1-1-1、建立會話管理者
是AFHTTPSessionManager作為會話管理者,用manager建立
不是AFURLSessionManager,而且AFURLSessionManager無manager方法
1-1-2、開始請求,URL都不需要自己建立了。
第一個參數:請求路徑(NSString
以前: http://120.25.226.186:32812/video?type=JSON
http://120.25.226.186:32812/login?username=520it&pwd=520it&type=JSON
協議頭+主機地址+介面名稱+?+參數&參數
現在:http://120.25.226.186:32812/video
http://120.25.226.186:32812/login
協議頭+主機地址+介面名稱
第二個參數:要傳遞的參數(字典)
第三個參數: progress:進度 nil
第四個參數: success:成功,請求成功的回調
task:請求任務
responseObject:響應體資訊,而且內部已經進行了序列化處理
第五個參數:failure 請求失敗的回調
task:請求任務
error:如果失敗,那麼error有值
1-2、源碼展示
2、AFN 3.X的檔案下載
2-1、步驟:
第一個參數:請求對象
第二個參數:progress 進度資訊的回調
downloadProgress
completedUnitCount:已經下載的資料大小
totalUnitCount":資料的總大小
第三個參數:destination 有傳回值
傳遞一個目標路徑(NSURL),AFN內部會自動執行剪下處理
targetPath:臨時路徑
response: 回應標頭資訊
第四個參數:completionHandler 下載完成之後調用
2-2、源碼展示
3、AFN 3.X的檔案上傳
4、AFN 3.X的提示
在實際開發中,是不會在控制器中直接調用架構的網路請求,比如:如果在網路請求的某個控制器中直接調用了這個AFN架構,會出現後期不好維護的情況,比如一般企業開發的app項目會有十來個二十來 個ViewController,大部分控制器都會需要活資料,也就是需要通過請求網路來擷取資料,那麼在多個控制器都匯入和使用了AFN架構,而實際開發需求可能會讓你換掉網路請求架構,要將這個AFN架構換成 ASI架構,這樣可想而知,作為碼農都要哭了。
那麼可行性方案,也是企業開發中常常會用到的方法:
在需要網路請求的控制器和網路請求架構之間建立一個工具類,這個工具類可以是類別,也可以是普通類,然後將網路請求的方法簡易封裝起來,最好能應對不同情況和不同的資料的請求,並且能實現,當 我將AFN架構替換成ASI架構的時候,控制器裡調用的這個工具類的方法完全不需要改變,要改變的只是工具類中將AFN替換成ASI架構。總之,建立一個網路請求工具類,能夠讓所有的控制器不依賴底層框 架,只依賴這個工具類。
5、AFN 3.X 序列化相關
5-1、JSON解析,內部會自動對JSON資料進行還原序列化處理,通過回應標頭資訊返回字典對象(可以列印出其類型和字典元素值查看)
不需要手動設定解析方式。
5-2、XML解析需要<NSXMLParserDelegate>協議輔助解析XML,當然也可以使用我的封裝好的能實現XML直接轉模型字典的工具類"HYXMLParser"。
需要告訴AFN以XML的方式解析資料。
GET方法中要用有NSXMLParser參數的解析方法。
5-3、直接返回伺服器的HTML資料格式,記得將返回的資料要設定Encoding為NSUTF8StringEncoding,然後直接輸出。
需要手動設定告訴AFN解析方式為不解析,即AFHTTPResponseSerializer serializer。
5-4、對於返回的是NSData格式的資料,比如網路上的返回的圖片、視頻等資源位元據。
需要手動設定告訴AFN解析方式為不解析,即AFHTTPResponseSerializer serializer。
6、AFN 3.X 網路監聽(不難)
轉載註明出處:http://www.cnblogs.com/goodboy-heyang/p/5215991.html,尊重勞動成果。