NSURLConnection
實現NSURLConnectionDataDelegate, NSURLConnectionDelegate兩個協議,幾個重要的回調實現
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存儲
class func defaultSessionConfiguration() -> NSURLSessionConfiguration
// 配置信息和default大致相同。除了,不會把cache,證書,或者任何和Session相關的數據存儲到硬盤,而是存儲在內存中,生命周期和Session一致。比如瀏覽器無痕瀏覽等功能就可以基于這個來做。
class func ephemeralSessionConfiguration() -> NSURLSessionConfiguration
// 創建一個可以在后臺甚至APP已經關閉的時候仍然在傳輸數據的會話。注意,后臺Session一定要在創建的時候賦予一個唯一的identifier,這樣在APP下次運行的時候,能夠根據identifier來進行相關的區分。如果用戶關閉了APP,IOS 系統會關閉所有的background Session。而且,被用戶強制關閉了以后,IOS系統不會主動喚醒APP,只有用戶下次啟動了APP,數據傳輸才會繼續。
class func backgroundSessionConfigurationWithIdentifier(identifier: String) -> NSURLSessionConfiguration
NSURLSessionTask
實際的Session任務,分為三種, 創建的task都是掛起狀態,需要resume才能執行。
// 用來請求資源,然后服務器返回數據,再內存中存儲為NSData格式。
class NSURLSessionDataTask : NSURLSessionTask {
}
//和DataTask類似,只不過在請求的時候提供了request body。并且background Session支持 upload task。
class NSURLSessionUploadTask : NSURLSessionDataTask {
}
// 下載內容到硬盤上,所有類型的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)