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)