1. 程式人生 > >iOS開發之網路程式設計--1、AFNetwork 3.x 的所有開發中常用基礎介紹

iOS開發之網路程式設計--1、AFNetwork 3.x 的所有開發中常用基礎介紹

前言:第三方網路請求框架中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 網路監聽(不難)

  

相關推薦

iOS開發網路程式設計--1AFNetwork 3.x所有開發常用基礎介紹

前言:第三方網路請求框架中AFNetwork 3.x收歡迎程度相當高的: 由於iOS 7 和 Mac OS X 10.9 Mavericks 中一個顯著的變化就是對 Foundation URL 載入系統的徹底重構。而且現在AFN 3.x版本 完全摒棄了NSURLConnection,而使用了NSURL

iOS開發網路程式設計--4NSURLSessionDataTask實現檔案下載(離線斷點續傳下載)

前言:根據前篇《iOS開發之網路程式設計--2、NSURLSessionDownloadTask檔案下載》或者《iOS開發之網路程式設計--3、NSURLSessionDataTask實現檔案下載(離線斷點續傳下載)》,都遺留了一個細節未處理的問題,那就是在離線斷點下載的過程中,當應用程式重新啟動之後,進度

iOS開發網路程式設計篇三:同步,非同步請求差異及用法

在網路請求方式上,有同步和非同步之分,相關內容涉及到執行緒部分知識,這一節咱們需要知道如何去傳送一個同步或者非同步的請求,以及它們二者的區別。 一、同步請求 在網路程式設計第二篇,咱們寫的get,post請求使用的都是同步請求,那結合同步非同步、get/post組

iOS開發網路程式設計:Socket網路程式設計

一、Socket原理套接字(socket)概念套接字(socket)是通訊的基石,是支援TCP/IP協議的網路通訊的基本操作單元。它是網路通訊過程中端點的抽象表示,包含進行網路通訊必須的五種資訊:連線使用的協議,本地主機的IP地址,本地程序的協議埠,遠地主機的IP地址,遠地程

python網路程式設計1-socket-tcp與udp

一、概念 兩個獨立python檔案之間可以通過寫入檔案,讀取檔案進行互動 由於不同機器上的程式要通訊,才產生了網路 B/S架構統一入口,各種小程式和公眾號 服務端 一直執行,等待服務別人 客戶端 用的時候,才使用服務 想要實現通訊 網絡卡 和 網線 網絡卡上有全球唯一的mac地址(實體地址) 4

網路程式設計 1TCP客戶端服務端的程式設計模型

客戶端呼叫虛列 呼叫socket函式建立套接字 呼叫connect連結直服務端 呼叫I/O函式(write/read)與伺服器進行通訊 呼叫close關閉套接字 //步驟一:建立

iOS開發獲取實時氣壓相對高度

隨著中國北京2022年冬奧會申請成功,很多滑雪愛好者急切需要一款滑雪工具的app,商家看準了這次機會,開始開發該類應用,那麼必定少不了測量實時氣壓值,蘋果大boss在iPhone 6及以後的裝置內建了氣

iOS開發網路錯誤分層處理

在使用iOS的URL載入系統時,手機端和伺服器端端連線可能會出現各種各樣的錯誤,大致可以分為3種: 1、作業系統錯誤:資料包沒有到達指定的目標導致。這類錯誤iOS中用NSError物件包裝起來了,這類錯誤可以用Apple 提供的Reachability來檢測到

python高階學習日誌第二三天網路程式設計

python高階學習日誌第二、三天之網路程式設計 UDP接收資料以及基於UDP的交易聊天器 一個Java程式設計師,但是打算自學一下python,所以把自己學到的東西記錄在這裡。也免得我自己忘記新學的,年紀大了真的很容易忘東西。 哈哈,我喜歡邊寫程式邊聽歌

android開發筆記網路程式設計—簡易新聞客戶端

今天我們來對前面講過的知識綜合運用一下,包括xml的PULL解析,listView的萬能介面卡等知識。。。。 那先來看一個元件—->智慧圖片載入器(smart-image-view),它可以很方便的載入一張網路圖片。 SmartImageView的設計

C#精通C#程式設計:玩轉開發例項...C#程式設計入門C#程式設計例項C#開發例項與網路程式設計等....

            C#是微軟公司釋出的一種面向物件的、運行於.NET Framework之上的高階程式設計語言。並定於在微軟職業開發者論壇(PDC)上登臺亮相。C#是微軟公司研究員Anders Hejlsberg的最新成果。C#看起來與Java有著驚人的相似;它包

android開發網路棋牌類線上遊戲開發心得(伺服器端Java)

  這個專案的一個特別之處是,客戶端是手機,使用者通過行動網路與伺服器通訊。和PC相比,手機的處理能力極弱,而且網路流量費用昂貴。因為除了要考慮普通網路遊戲的一些問題之外,這兩點也需要在設計中充分考慮。  首先是開發語言的選擇,由於伺服器是Linux的環境,MS的技術直接排除,至於MONO嘛,我實在不放心。可

12Cocos2dx 3.0遊戲開發找小三3.0的生命周期分析

ide () mil and 地理 splay ioe ase ima 重開發人員的勞動成果。轉載的時候請務必註明出處:http://blog.csdn.net/haomengzhu/article/details/27706303 生命周期分析 在前面文章中我

前端基於react,後端基於.net core2.0的開發路(1介紹

tco ioc logs asp webpack 路由 src 部署 關鍵字 文章提綱目錄 1.前端基於react,後端基於.net core2.0的開發之路(1) 介紹 2.前端基於react,後端基於.net core2.0的開發之路(2) 開發環境的配置,

Week2-作業1 《構建法》1216章觀後感

作業1 其他 為什麽 你會 成本 lin 定義 困難 對話 這幾天閱讀了《構建之法》中的幾章,受益匪淺,刷新了很多我對軟件工程的認知。這本書讓我很驚喜,閱讀起來不像其他書一樣枯燥,有很多人物的設計,以及對話的形式,非常有趣。 第一章、概述 讀完第一章了解了軟件工程具體是

GO語言使用網路程式設計(TCP程式設計)

一、基本介紹 Golang的主要設計目標之一就是面向大規模後端服務程式,網路通訊這塊是服務端 程式必不可少也是至關重要的一部分。 1、 網路程式設計有兩種: 1) TCP socket程式設計,是網路程式設計的主流。之所以叫Tcp socket程式設計,是因為底層是基於Tcp/i

圖文詳解網路程式設計

1.網路程式設計 什麼是網路程式設計 多臺計算機連線形成網路 網路的作用 資料互動 資料共享 2.網路三要素 網路協議:雙方實體完成通訊或服務所必須遵循的規則和約定  &

1Maven配置多環境開發(devbetaprod)

我們在線上開發的時候不免要用到多個環境開發,一種的開發環境,一種是測試環境,還有就是生產環境,我們在開發的時候不可能直接用線上的環境進行修改,因為這樣會帶來很多無可預知的麻煩,所以我們要進行環境隔離~ <build> </build>裡面新增下面引數,設定Ma

聰哥哥教你學Python網路程式設計

網路程式設計,又稱Socket程式設計。 說到網路程式設計,大家都想起一個東西,那就是TCP/IP。 絕大多數程式語言都有對TCP/IP的操作API。 聰哥哥我今天主要圍繞兩個方面談談網路程式設計。一個TCP,另外一個就是UDP。 關於TCP和UDP,它們無論是在Java,還是在Py

網路程式設計-----bind()listen()

繼上篇socket之後,又出一坑。。。篇簡單的理解   bind()  函式原型:int bind( int sockfd , const struct sockaddr * my_addr, sockle