天天看點

iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)

說明:

  1)該文主要介紹如何使用nsurlsession來發送get請求和post請求

  2)本文将不再講解nsurlconnection的使用,如有需要了解nsurlconnection如何發送請求。

    詳細資訊,請參考:http://www.cnblogs.com/wendingding/p/3813706.html

  3)本文示例代碼發送的請求均為http請求,已經對info.plist檔案進行配置。

    如何配置,請參考:https://github.com/hangangandhanmeimei/ios9adaptationtips

  4)本文示例代碼,可以在下面的位址擷取:

    https://github.com/hangangandhanmeimei/code

一、簡單說明

  在ios9.0之後,以前使用的nsurlconnection過期,蘋果推薦使用nsurlsession來替換nsurlconnection完成網路請求相關操作。

  nsurlsession的使用非常簡單,先根據會話對象建立一個請求task,然後執行該task即可。

  nsurlsessiontask本身是一個抽象類,在使用的時候,通常是根據具體的需求使用它的幾個子類。關系如下:

iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)

二、發送get請求

  使用nsurlsession發送get請求的方法和nsurlconnection類似,整個過程如下:

    1)确定請求路徑(一般由公司的背景開發人員以接口文檔的方式提供),get請求參數直接跟在url後面

    2)建立請求對象(預設包含了請求頭和請求方法【get】),此步驟可以省略

    3)建立會話對象(nsurlsession)

    4)根據會話對象建立請求任務(nsurlsessiondatatask)

    5)執行task

    6)當得到伺服器傳回的響應後,解析資料(xml|json|http)

  示例代碼:

iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)
iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)
iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)
iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)
iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)
iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)

  執行結果:

iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)

  此處列印的值是一個字典,字典中success這個key對應的value列印出來為unicode編碼的,如果想輸出中文,可以為nsdictionary提供一個分類,重寫系統中的方法。

iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)
iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)
iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)
iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)
iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)

三、發送post請求

  使用nsurlsession發送post請求的方法和nsurlconnection類似,整個過程如下:

    1)确定請求路徑(一般由公司的背景開發人員以接口文檔的方式提供)

    2)建立可變的請求對象(因為需要修改),此步驟不可以省略

    3)修改請求方法為post

    4)設定請求體,把參數轉換為二進制資料并設定請求體

    5)建立會話對象(nsurlsession)

    6)根據會話對象建立請求任務(nsurlsessiondatatask)

    7)執行task

    8)當得到伺服器傳回的響應後,解析資料(xml|json|http)

iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)
iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)
iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)

四、nsurlsession代理方法簡單介紹

  有的時候,我們可能需要監聽網絡請求的過程(如下載下傳檔案需監聽檔案下載下傳進度),那麼就需要用到代理方法。

  接下來通過代碼簡單說明nsurlsession中普通網絡請求會涉及代理方法的使用

iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)
iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)

  代碼執行結果:

iOS開發網絡篇—發送GET和POST請求(使用NSURLSession)