NSURLSession
一、NSURLSessionConfiguration
介绍:分别配置每一个 session 对象。(NSURLConnection 很难做到)
分类:
1) defaultSessionConfiguration: 默认 session 配置,类似 NSURLConnection 的标准配置,使用硬盘来存储缓存数据。
2) backgroundSessionConfiguration: 后台session配置,与默认配置类似,不同的是会在后台开启另一个线程来处理网络数据。
注意: 这里如果设置了超时限制的话,可能会导致一直下载失败。因为后台下载会根据设备的负载程度决定分配下载的资源。
3) ephemeralSessionConfiguration: 临时session配置,与默认配置相比,这个配置不会将缓存、cookie等存在本地,只会存在内存里,所以当程序退出时,所有的数据都会消失。
二、NSURLSessionTask
介绍:使用 NSURLSessionTask 来具体执行网络请求的任务。NSURLSessionTask 支持网络请求的取消、暂停和恢复。
分类:
1) NSURLSessionDataTask: 处理一般的 NSData 数据对象,从服务器获取 JSON 或 XML 等,但不支持后台获取。
2) NSURLSessionDownloadTask: 用于下载文件,支持后台下载。
3) NSURLSessionUploadTask: 用于上传文件,支持后台上传。
三、NSSession
总的来说,创建一个 session,需要配置 configuration 和 task。
四、实践总结
在两年前我使用了 ASI 有半年时间,后来看到已经没再继续维护了,就用了 apple 原生的 NSURLConnection,而且用了适配器模式写得。所以为了兼容以前的版本,我是使用 delegate 的方式来实现回调处理的。(其实 AFNetworking 2.0 已经支持了 NSURLSession,想使用第三方框架的可以考虑。)
1、断点下载
创建 task 的时候
NSData* downloadedData = ... // 上一次中断下载时候,保存的临时文件。
httpTask = [httpSession downloadTaskWithResumeData: downloadedData]; 中断 task
[httpTask cancelByProducingResumeData:^(NSData *resumeData) {
// 把 resumeData 存到了一个临时文件上,以便 app 完全关闭后,也能继续断点下载。
}];
在下载完成的时候
-(void) URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location {
记得把下载过程中用来存储 resumeData 的临时文件给删除掉。
}
NSURLSession的更多相关文章
- [OC] NSURLSession
有的程序员老了,还没听过NSURLSession 有的程序员还嫩,没用过NSURLConnection 有的程序员很单纯,他只知道AFN. NSURLConnection在iOS9被宣布弃用,NSUR ...
- NSURLSession详解
导语 现在NSURLConnection在开发中会使用的越来越少,iOS9已经将NSURLConnection废弃,现在最低版本一般适配iOS7,所以也可以使用. NSURLConnection相对于 ...
- iOS开发之Alamofire源码解析前奏--NSURLSession全家桶
今天博客的主题不是Alamofire, 而是iOS网络编程中经常使用的NSURLSession.如果你想看权威的NSURLSession的东西,那么就得去苹果官方的开发中心去看了,虽然是英文的,但是结 ...
- [swift]NSURLSession
一.简单说明 在iOS9.0之后,以前使用的NSURLConnection过期,苹果推荐使用NSURLSession来替换NSURLConnection完成网路请求相关操作. NSURLSession ...
- iOS网络2——NSURLSession使用详解
原文在此 一.整体介绍 NSURLSession在2013年随着iOS7的发布一起面世,苹果对它的定位是作为NSURLConnection的替代者,然后逐步将NSURLConnection退出历史舞台 ...
- NSURLSession网络请求
个人感觉在网上很难找到很简单的网络请求.或许是我才疏学浅 , 所有就有了下面这一段 , 虽然都是代码 , 但是全有注释 . //1/获取文件访问路径 NSString *path=@"ht ...
- 网络第三节——NSURLSession
有的程序员老了,还没听过NSURLSession有的程序员还嫩,没用过NSURLConnection有的程序员很单纯,他只知道AFN. NSURLConnection在iOS9被宣布弃用,NSURLS ...
- 网络请求 __ NSURLSession
首先配置into.plist文件 1. 添加 App Transport Security Settings , Type栏自动变为Dictionary 2. 点击左边箭头,使之向下,点击右边加号,添 ...
- NSURLSession总结
NSURLSession(会话)(ios7新增加) //英译 Session:会议,讲话 configuration:结构,配置 expect:预期 resume:取得 suspend:推迟 pro ...
- NSURLSession访问网络数据
1.NSMutableURLRequest的设置 //创建NSMutableURLRequest对象 NSMutableURLRequest *request = [NSMutableURLReque ...
随机推荐
- Burp Suite使用介绍
Burp Suite使用介绍(一) 22人收藏 收藏 2014/05/01 19:54 | 小乐天 | 工具收集 | 占个座先 Getting Started Burp Suite 是用于攻击web ...
- ARP缓存记录种类动态条目和静态条目
ARP缓存记录种类动态条目和静态条目 为使广播量最小,ARP维护IP地址到MAC地址映射的缓存以便将来使用.根据缓存的有效期时间,ARP缓存中包含动态和静态条目本文选自ARP协议全面实战手册. 这里首 ...
- JAVA定时执行任务,每天定时几点钟执行任务
JAVA定时执行任务,每天定时几点钟执行任务的示例如下: 1.建立TimerManage类,设置时间点,时间点设置的管理类,代码如下: package com.pcitc.time; import j ...
- Pebbles
Pebbles Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- Linux 档案与目录管理
『 cd /etc 』这个情况,这也就是所谓的『绝对路径』,他是从根目录连续写上来的一个情况,所以不论你在哪一个路径现执行这一个指令,都会将你移动到该路径下.那如果我是使用『 cd etc 』呢?那表 ...
- HTML head 头标签
HTML head 头部分的标签.元素有很多,涉及到浏览器对网页的渲染,SEO 等等,而各个浏览器内核以及各个国内浏览器厂商都有些自己的标签元素,这就造成了很多差异性.移动互联网时代,head 头部结 ...
- 编译gcc4.7.3 其他版本的应该也可以
编译它真麻烦啊..耗费了我一下午..我是ubuntu10.10环境的.内置的gcc版本很老了,好像是4.2吧.源里又没有高版本的,于是自己编译了. 准备 下载gcc:点我打开 //源,找个最快的.下你 ...
- 【BZOJ】3039: 玉蟾宫(DP/单调栈)
http://www.lydsy.com/JudgeOnline/problem.php?id=3039 每次看到我的提交都有点淡淡的忧伤T_T.. 看到此题我想到用前缀和维护点ij向左和向上能拓展的 ...
- dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算(终结版)
首先,说下概念(网上很多帖子几个地方都搞混了,理一下): dip : device independent pixels ,设备无关像素. 我看很多帖子写的五花八门的,关于d的,什么display ...
- MS14-068 privilege escalation PoC: 可以让任何域内用户提升为域管理员
https://github.com/bidord/pykek ms14-068.py Exploits MS14-680 vulnerability on an un-patched domain ...