iOS_使用NSURLSessionDataDelegate的代理方法下载数据
来源:互联网 发布:sql新增字段语句 编辑:程序博客网 时间:2024/04/29 14:36
转载自iOS_使用NSURLSessionDataDelegate的代理方法下载数据 作者 Sponge_CMZ
目录(?)[+]
说明:
本文将介绍NSURLSessionDataDelegate, 使用NSURLSessionDataDelegate方法实现下载数据. 博文底部会对文中所使用的方法有详细的介绍, 如果感兴趣可以仔细阅读.
session 类型 : default session.
session的创建方法: + sessionWithConfiguration:delegate:delegateQueue:
task 类型: data task.
代码中所使用到的接口(例:
http://c.3g.163.com/photo/api/list/0096/4GJ60096.json
) 都具有时效性, 建议测试时使用一个可以提供数据的新接口.文章中尽量不使用或少使用封装, 目的是让大家清楚为了实现功能所需要的官方核心API是哪些(如果使用封装, 会在封装外面加以注释)
此文章由 @春雨 编写. 经 @Scott,@黑子 审核. 若转载此文章,请注明出处和作者
iOS_NSURLSessionDataDelegate
核心API
Class :
- NSURLSession
- NSURLSessionConfiguration
- NSURLSessionTask
- NSURLSessionDataTask
- NSURLSessionDownload
Delegate :
- NSURLSessionDelegate
- NSURLSessionTaskDelegate
- NSURLSessionDataDelegate
- NSURLSessionDownloadDelegate
涉及的API :
- NSURLSession
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- NSURLSessionDataDelegate
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- NSURLSessionTaskDelegate
- 1
- 2
- 1
- 2
- NSURLSessionDownloadDelegate
- 1
- 2
- 1
- 2
功能实现
思路 :
- 正常实现data任务的下载.
- data任务转成download任务, 完成下载.
- 取消data任务下载.
Code :
一. 正常实现data任务的下载.
步骤1 :
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
步骤3 : 创建会话和任务
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
注 : 使用- dataTaskWithURL:方法创建data task, 去掉步骤3中的4. 将5替换成下面的代码. 此方法有局限性, 只能用于GET请求方式.
- 1
- 2
- 1
- 2
步骤4 : 实现代理方法
- 接收到返回信息时(还未开始下载), 执行的代理方法.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
2 . 接收返回的数据
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
3 . 任务完成之后调用
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
二. data任务转成download任务, 完成下载.
1 . 当转换成download task时, 会下载资源数据到磁盘文件上, 我们不需要自己接收数据了.
2 . 我们还需要签订NSURLSessionDownloadDelegate.
3 . 改变步骤4.
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
- 注: 当data task 转换成 download task 时, 我们必须调用NSURLSessionDataDelegate中的
-URLSession:dataTask:didBecomeDownloadTask: 方法.
步骤4中的 2 变成如下代码
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
- 注: 因为已经转换成download task, 所以接下来将调用NSURLSessionDownloadDelegate的方法
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
三. 取消data任务下载.
步骤4 :
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- iOS_NSURLSessionDataDelegate
- 核心API
- 功能实现
- 思路
- Code
- 一 正常实现data任务的下载
- 二 data任务转成download任务 完成下载
- 三 取消data任务下载
- API 官方注释
- iOS_NSURLSessionDataDelegate
API 官方注释
- NSURLSession
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- NSURLSessionDataDelegate
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- NSURLSessionTaskDelegate
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- NSURLSessionDownloadDelegate
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
目录(?)[+]
说明:
本文将介绍NSURLSessionDataDelegate, 使用NSURLSessionDataDelegate方法实现下载数据. 博文底部会对文中所使用的方法有详细的介绍, 如果感兴趣可以仔细阅读.
session 类型 : default session.
session的创建方法: + sessionWithConfiguration:delegate:delegateQueue:
task 类型: data task.
代码中所使用到的接口(例:
http://c.3g.163.com/photo/api/list/0096/4GJ60096.json
) 都具有时效性, 建议测试时使用一个可以提供数据的新接口.文章中尽量不使用或少使用封装, 目的是让大家清楚为了实现功能所需要的官方核心API是哪些(如果使用封装, 会在封装外面加以注释)
此文章由 @春雨 编写. 经 @Scott,@黑子 审核. 若转载此文章,请注明出处和作者
iOS_NSURLSessionDataDelegate
核心API
Class :
- NSURLSession
- NSURLSessionConfiguration
- NSURLSessionTask
- NSURLSessionDataTask
- NSURLSessionDownload
Delegate :
- NSURLSessionDelegate
- NSURLSessionTaskDelegate
- NSURLSessionDataDelegate
- NSURLSessionDownloadDelegate
涉及的API :
- NSURLSession
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- NSURLSessionDataDelegate
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- NSURLSessionTaskDelegate
- 1
- 2
- 1
- 2
- NSURLSessionDownloadDelegate
- 1
- 2
- 1
- 2
功能实现
思路 :
- 正常实现data任务的下载.
- data任务转成download任务, 完成下载.
- 取消data任务下载.
Code :
一. 正常实现data任务的下载.
步骤1 :
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
步骤3 : 创建会话和任务
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
注 : 使用- dataTaskWithURL:方法创建data task, 去掉步骤3中的4. 将5替换成下面的代码. 此方法有局限性, 只能用于GET请求方式.
- 1
- 2
- 1
- 2
步骤4 : 实现代理方法
- 接收到返回信息时(还未开始下载), 执行的代理方法.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
2 . 接收返回的数据
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
3 . 任务完成之后调用
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
二. data任务转成download任务, 完成下载.
1 . 当转换成download task时, 会下载资源数据到磁盘文件上, 我们不需要自己接收数据了.
2 . 我们还需要签订NSURLSessionDownloadDelegate.
3 . 改变步骤4.
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
- 注: 当data task 转换成 download task 时, 我们必须调用NSURLSessionDataDelegate中的
-URLSession:dataTask:didBecomeDownloadTask: 方法.
步骤4中的 2 变成如下代码
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
- 注: 因为已经转换成download task, 所以接下来将调用NSURLSessionDownloadDelegate的方法
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
三. 取消data任务下载.
步骤4 :
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- iOS_NSURLSessionDataDelegate
- 核心API
- 功能实现
- 思路
- Code
- 一 正常实现data任务的下载
- 二 data任务转成download任务 完成下载
- 三 取消data任务下载
- API 官方注释
- iOS_NSURLSessionDataDelegate
API 官方注释
- NSURLSession
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- NSURLSessionDataDelegate
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- NSURLSessionTaskDelegate
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- NSURLSessionDownloadDelegate
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- iOS_使用NSURLSessionDataDelegate的代理方法下载数据
- iOS_使用NSURLSessionDataDelegate的代理方法下载数据
- Android 源码下载总结+终端使用代理下载的方法
- iOS_传感器的使用
- SocksProxy代理服务器下载,附IE使用socks代理的方法
- iOS_简单的数据存储
- iOS_$(SRCROOT)路径的使用
- iOS_ NSUserDefaults_数据本地化的轻型装备
- iOS_延时执行的几种方法
- 使用ASI上传和下载数据的方法
- 使用代理的方法 iOS
- 关于代理方法的使用
- Swift-代理方法的使用
- iOS_使用ARC需要注意的问题
- iOS_陀螺仪、加速计的使用
- iOS_音频下载
- IOS_下载图片
- iOS_音频下载
- DOS命令(批处理命令)选项(choice)处理
- 移动端webapp自适应布局
- 归纳一些性能优化的方法
- 算法训练: Restore IP Addresses
- iOS SDAutoLayout布局体验(1)
- iOS_使用NSURLSessionDataDelegate的代理方法下载数据
- 如何阅读spring源码
- EF DataBase First 动态拼接数据库连接
- Scheduling R scripts and processes on Windows and Unix/Linux
- 十年之后,重回csdn
- Android程序员--常用网站链接
- 微信小程序之自定义toast实例 —— 微信小程序实战系列(6)
- Android studio 修改快捷键
- java基础_day0015_循环_for_嵌套_优化