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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • NSURLSession 使用步骤使用NSURLSession对象创建Task,然后执行Task -(void)g...
    BEYOND黄阅读 4,425评论 0 0
  • NSURLSession概述1. NSURLSession session类型NSURLSession包括下面3种...
    瞎嘚嘚阅读 5,857评论 2 2
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 9,190评论 2 7
  • 每个孩子都是天使。 看了我们家天使的学习之后我想说,只有这样的孩子才是真正的父母的天使。她完全是自带马达的牛娃啊!...
    jiajiasoso阅读 4,905评论 0 0
  • 南京师范大学的郦波老师在一档古诗词栏目中讲了一个有趣的故事。 2002年冬天的一次课堂上,他给留学生讲古汉语虚实词...
    鱼乐儿阅读 2,540评论 4 3