說明:
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本身是一個抽象類,在使用的時候,通常是根據具體的需求使用它的幾個子類。關系如下:
二、發送get請求
使用nsurlsession發送get請求的方法和nsurlconnection類似,整個過程如下:
1)确定請求路徑(一般由公司的背景開發人員以接口文檔的方式提供),get請求參數直接跟在url後面
2)建立請求對象(預設包含了請求頭和請求方法【get】),此步驟可以省略
3)建立會話對象(nsurlsession)
4)根據會話對象建立請求任務(nsurlsessiondatatask)
5)執行task
6)當得到伺服器傳回的響應後,解析資料(xml|json|http)
示例代碼:
執行結果:
此處列印的值是一個字典,字典中success這個key對應的value列印出來為unicode編碼的,如果想輸出中文,可以為nsdictionary提供一個分類,重寫系統中的方法。
三、發送post請求
使用nsurlsession發送post請求的方法和nsurlconnection類似,整個過程如下:
1)确定請求路徑(一般由公司的背景開發人員以接口文檔的方式提供)
2)建立可變的請求對象(因為需要修改),此步驟不可以省略
3)修改請求方法為post
4)設定請求體,把參數轉換為二進制資料并設定請求體
5)建立會話對象(nsurlsession)
6)根據會話對象建立請求任務(nsurlsessiondatatask)
7)執行task
8)當得到伺服器傳回的響應後,解析資料(xml|json|http)
四、nsurlsession代理方法簡單介紹
有的時候,我們可能需要監聽網絡請求的過程(如下載下傳檔案需監聽檔案下載下傳進度),那麼就需要用到代理方法。
接下來通過代碼簡單說明nsurlsession中普通網絡請求會涉及代理方法的使用
代碼執行結果: