前言
Swift3.0把之前帶NS前綴的類都改成Swift風(fēng)格了厕诡,像常用的NSURLSession變成URLSession
目錄
處理網(wǎng)絡(luò)請(qǐng)求的幾個(gè)關(guān)鍵類
URLSession
URLSession是用來(lái)處理基于HTTP/HTTPS請(qǐng)求的類
URLSession是一個(gè)可以響應(yīng)發(fā)送或者接受HTTP請(qǐng)求的關(guān)鍵類语御,可以通過(guò)URLSessionConfiguration類新建URLSession實(shí)例。有以下三種方式:
URLSessionConfiguration.default
默認(rèn)configuration實(shí)例創(chuàng)建方式拨齐,使用硬盤上持久化全局緩存、證書(credential)和cookie的存儲(chǔ)對(duì)象URLSessionConfiguration.ephemeral
唯一跟默認(rèn)configuration不一樣的是所以與會(huì)話(session)相關(guān)的數(shù)據(jù)都存儲(chǔ)在內(nèi)存中URLSessionConfiguration.background(withIdentifier: "ConfigurationID")
讓會(huì)話在后臺(tái)執(zhí)行上載或下載任務(wù)。即使應(yīng)用程序本身被暫蛙睿或終止,傳輸仍將繼續(xù)
URLSessionConfiguration
URLSessionConfiguration可以配置會(huì)話(session)屬性像timeout旺矾、HTTP header蔑鹦、緩存策略。
URLSessionTask
URLSessionTask是一個(gè)表示任務(wù)對(duì)象的抽象類箕宙,一個(gè)會(huì)話創(chuàng)建一個(gè)任務(wù)嚎朽,這里任務(wù)是指獲取數(shù)據(jù)、下載或上傳文件柬帕。
有三種類型的會(huì)話
- URLSessionDataTask: 處理從HTTP get請(qǐng)求中從服務(wù)器獲取數(shù)據(jù)到內(nèi)存中哟忍。
- URLSessionUploadTask:上傳硬盤中的文件到服務(wù)器,一般是HTTP POST 或 PUT方式
- URLSessionDownloadTask: 從遠(yuǎn)程服務(wù)器下載文件到臨時(shí)文件位置陷寝。
還可以暫停魁索、恢復(fù)和取消任務(wù)(tasks),此外URLSessionDownloadTask還支持在未來(lái)某一時(shí)刻恢復(fù)暫停的下載盼铁。
通常URLSession有兩種返回?cái)?shù)據(jù)的方式:1.無(wú)論執(zhí)行任務(wù)成功還是失敗都會(huì)通過(guò)completion handler block來(lái)處理粗蔚。2.通過(guò)在會(huì)話創(chuàng)建時(shí)設(shè)置的委托調(diào)用方法