NSURLConnection
實(shí)現(xiàn)NSURLConnectionDataDelegate, NSURLConnectionDelegate兩個(gè)協(xié)議擂送,幾個(gè)重要的回調(diào)實(shí)現(xiàn)
func connection(connection: NSURLConnection, didFailWithError error: NSError) {
NSLog("\(error)")
}
func connection(connection: NSURLConnection, didReceiveResponse response: NSURLResponse) {
}
func connection(connection: NSURLConnection, didReceiveData data: NSData) {
var responseData:String = NSString(data:data, encoding:NSUTF8StringEncoding)! as String
NSLog("responseData="+responseData)
}
func connectionDidFinishLoading(connection: NSURLConnection) {
NSLog("connectionDidFinishLoading")
}
NSURLSession
NSURLSessionConfiguration
三種類方法返回NSURLSession的配置信息红竭。
// 使用基于硬盤的持久話Cache炼幔,保存用戶的證書到鑰匙串,使用共享cookie存儲(chǔ)
class func defaultSessionConfiguration() -> NSURLSessionConfiguration
// 配置信息和default大致相同演顾。除了潜秋,不會(huì)把cache同廉,證書汽久,或者任何和Session相關(guān)的數(shù)據(jù)存儲(chǔ)到硬盤羡洛,而是存儲(chǔ)在內(nèi)存中挂脑,生命周期和Session一致。比如瀏覽器無痕瀏覽等功能就可以基于這個(gè)來做欲侮。
class func ephemeralSessionConfiguration() -> NSURLSessionConfiguration
// 創(chuàng)建一個(gè)可以在后臺(tái)甚至APP已經(jīng)關(guān)閉的時(shí)候仍然在傳輸數(shù)據(jù)的會(huì)話崭闲。注意,后臺(tái)Session一定要在創(chuàng)建的時(shí)候賦予一個(gè)唯一的identifier威蕉,這樣在APP下次運(yùn)行的時(shí)候刁俭,能夠根據(jù)identifier來進(jìn)行相關(guān)的區(qū)分。如果用戶關(guān)閉了APP,IOS 系統(tǒng)會(huì)關(guān)閉所有的background Session韧涨。而且牍戚,被用戶強(qiáng)制關(guān)閉了以后,IOS系統(tǒng)不會(huì)主動(dòng)喚醒APP虑粥,只有用戶下次啟動(dòng)了APP如孝,數(shù)據(jù)傳輸才會(huì)繼續(xù)。
class func backgroundSessionConfigurationWithIdentifier(identifier: String) -> NSURLSessionConfiguration
NSURLSessionTask
實(shí)際的Session任務(wù)舀奶,分為三種, 創(chuàng)建的task都是掛起狀態(tài)暑竟,需要resume才能執(zhí)行。
// 用來請求資源育勺,然后服務(wù)器返回?cái)?shù)據(jù)但荤,再內(nèi)存中存儲(chǔ)為NSData格式。
class NSURLSessionDataTask : NSURLSessionTask {
}
//和DataTask類似涧至,只不過在請求的時(shí)候提供了request body腹躁。并且background Session支持 upload task。
class NSURLSessionUploadTask : NSURLSessionDataTask {
}
// 下載內(nèi)容到硬盤上南蓬,所有類型的Session都支持
class NSURLSessionDownloadTask : NSURLSessionTask {
func cancelByProducingResumeData(completionHandler: (NSData!) -> Void)
}
NSURLSession
var sessionCfg = NSURLSessionConfiguration.defaultSessionConfiguration()
var session = NSURLSession(configuration: sessionCfg)
var task = session.dataTaskWithURL(url)
task.resume()
NSURLRequest
定請求的URL和cache策略纺非。
convenience init(URL: NSURL)
init(URL: NSURL, cachePolicy: NSURLRequestCachePolicy, timeoutInterval: NSTimeInterval)