iOS開發 GET、POST請求方法:NSURLSession篇

啊左~發表於2016-05-30

NSURLConnection,在iOS9被宣佈棄用,本文不使用NSURLConnection進行網路程式設計,有興趣的童鞋可以參考:

iOS開發 GET、POST請求方法(NSURLConnection篇)

介紹:NSURLSession,為iOS7中的新網路介面,是在2013年的WWDC上,由Apple提出的NSURLConnection繼任者的:NSURLSession。

NSURLSession,與NSURLConnection是並列的,且可以支援後臺相關的網路操作的新特性;與NSURLConnection不同的是,NSURLSession把NSURLConnection替換成NSURLSession, NSURLSessionConfiguration,NSURLSessionTask。

NSURLSession一般分別兩部操作:第一,通過NSURLSession的例項建立task;第二,執行task;

而NSURLSessionTask,也就是task,可以把它當作所謂的任務。

NSURLSessionTask是一個抽象子類,它有三個具體的子類是可以直接使用的:NSURLSessionDataTask,NSURLSessionUploadTask和NSURLSessionDownloadTask。這三個類應用的三個基本網路任務:獲取資料、上傳檔案、下載檔案。與資料有關的NSURLSessionDataTask也可以勝任上傳下載的任務,所以經常使用到。

————示例————–

一、GET方法

二、POST方法:

三、NSURLSessionDataDelegate代理方法

從前面兩種方法中,我們都可以看出,相比NSURLConnection,NSURLSession提供了block方式處理返回資料的簡便方式,但是,如果專案需要在網路請求資料的過程中,要做進一步的處理的話,需要呼叫NSURLSession的代理方法。

通常,使用代理方法需要先設定代理物件,但是通過檢視NSURLSessionDataDelegate文件,我們可以看到如下,代理屬性delegate為只讀狀態。

那麼我們需要怎樣設定代理物件呢?下面我們通過程式碼演示關於代理方法的使用:

首先在檔案開頭新增代理協議,

主方法的編寫如下:

關於代理行為:

 

 四、NSURLSessionDownloadTask

1.NSURLSessionDownloadTask:檔案下載任務。

2.NSURLSessionDownloadDelegate代理方法:

首先新增協議

代理方法如下:

 

五、NSURLSessionUploadTask

1. NSURLSessionUploadTask上傳檔案的方式有2種:

GET方法:

POST方法:

不同的點,在於,用post方法需要新增網路路徑的請求體body,而在實際開發中,上傳檔案一般使用post方式,更加安全可靠。

其他:

當然,對於使用NSURLSession開發的專案來說,還有更多的方式可以執行,需要我們在日常開發過程多多發現,以便更好地使用這個較新的網路介面,例如AFNetWorking2.0版本之後,就有了基於NSURLSession的封裝運用,具體的有興趣的童鞋可以去github瞭解下。

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

iOS開發 GET、POST請求方法:NSURLSession篇 iOS開發 GET、POST請求方法:NSURLSession篇

相關文章