NSURLSession
是iOS7
中新的網(wǎng)絡(luò)接口,與NSURLConnection
是并列的。
當(dāng)程序在前臺(tái)時(shí),NSURLSession與NSURLConnection大部分可以互相替代
NSURLSession支持后臺(tái)網(wǎng)絡(luò)操作,除非用戶強(qiáng)行關(guān)閉
NSURLSession提供的功能:
通過(guò)URL將數(shù)據(jù)下載到內(nèi)存
通過(guò)URL將數(shù)據(jù)下載到文件系統(tǒng)
將數(shù)據(jù)上傳到指定URL
在后臺(tái)完成上述功能
對(duì)于小型數(shù)據(jù),例如用戶登錄、下載小圖像、JSON & XML仍然使用NSURLConnection的異步或同步方法即可
NSURLSession的使用:
使用
NSURLSessionConfiguration
來(lái)配置NSURLSession
對(duì)象用NSURLSession對(duì)象來(lái)啟動(dòng)一個(gè)
NSURLSessionTask
對(duì)象
也可以使用系統(tǒng)全局的sharedSession
單例來(lái)滿足大多數(shù)的需求
注:相比較NSURLConnection的返回處理,NSURLSession提供了靈活的數(shù)據(jù)返回方式,可以使用簡(jiǎn)單的block
方式來(lái)處理返回?cái)?shù)據(jù),也可以使用更強(qiáng)大的delegate
NSURLSessionConfiguration:
作用:用于定義和配置NSURLSession對(duì)象
每一個(gè)NSURLSession對(duì)象都可以設(shè)置不同的NSURLSessionConfiguration,從而滿足應(yīng)用內(nèi)不同類型的網(wǎng)絡(luò)請(qǐng)求
NSURLSessionConfiguration的三種類型:
defaultSessionConfiguration
默認(rèn)session配置,類似NSURLConnection的標(biāo)準(zhǔn)配置,使用硬盤
來(lái)存儲(chǔ)緩存數(shù)據(jù)
ephemeralSessionConfiguration
臨時(shí)session配置,與默認(rèn)配置相比,這個(gè)配置不會(huì)將緩存、cookie等存在本地,只會(huì)存在內(nèi)存里,所以當(dāng)程序退出時(shí),所有的數(shù)據(jù)都會(huì)消失
backgroundSessionConfiguration
后臺(tái)session配置,與默認(rèn)配置類似,不同的是會(huì)在后臺(tái)
開(kāi)啟另一個(gè)線程來(lái)處理網(wǎng)絡(luò)數(shù)據(jù)
NSURLSessionTask:
NSURLSession使用NSURLSessionTask來(lái)具體執(zhí)行網(wǎng)絡(luò)請(qǐng)求的任務(wù)
NSURLSessionTask支持網(wǎng)絡(luò)請(qǐng)求的取消、暫停和恢復(fù)
,比如下載文件暫停之后再恢復(fù)就能夠自動(dòng)從上次的進(jìn)度繼續(xù)下載
NSURLSessionTask還能獲取數(shù)據(jù)的讀取進(jìn)度
NSURLSessionTask的三種類型:
NSURLSessionDataTask
處理一般的NSData數(shù)據(jù)對(duì)象,比如通過(guò)GET或POST方式從服務(wù)器獲取JSON或XML返回等等,但不支持后臺(tái)獲取
NSURLSessionUploadTask
用于上傳文件,支持后臺(tái)上傳
NSURLSessionDownloadTask
用于下載文件,支持后臺(tái)下載