Swift_网络编程

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)

你可能感兴趣的:(Swift_网络编程)