NSURLSession的应用
iOS7以后发布了NSURLSession用来替换NSURLConnection,NSURLSession使用方式有以下两种:
1.block方式
(1)创建的步骤
获取单例会话对象
创建URL对象
隐含创建request
创建NSURLSessionDataTask
// 1.获取会话对象
NSURLSession *session = [NSURLSession sharedSession];
//另外一种生成默认的GET请求的方法
NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/video"];NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];NSLog(@"%@", dict);
(2)使用NSURLSessionDataTask
创建session
创建URL
创建URLRequest
创建NSURLSessionDataTask
// 2.创建的一URL地址
NSURL *url = [NSURL URLWithString:@"http://192.168.15.172:8080/MJServer/login"];
// 3.创建一个请求对象
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = [@"username=123&pwd=123" dataUsingEncoding:NSUTF8StringEncoding];NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];NSLog(@"%@", dict);
}];[task resume];
(3)使用NSURLSessionDownloadTask
// 1.得到session对象
NSURLSession *session = [NSURLSession sharedSession];
// 2.创建URL对象
NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/resources/test.mp4"];NSURLSessionDownloadTask *task = [session downloadTaskWithURL:url completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {//NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];NSString *filePath = [caches stringByAppendingPathComponent:response.suggestedFilename];NSFileManager *fileManager = [NSFileManager defaultManager];[fileManager moveItemAtPath:location.path toPath:filePath error:nil];}];
2.代理方式
(void)downLoadTask2 {
NSURLSessionConfiguration *cfg = [NSURLSessionConfiguration defaultSessionConfiguration];
// 使用配置对象获取会话对象
NSURLSession *session = [NSURLSession sessionWithConfiguration:cfg delegate:self delegateQueue:[NSOperationQueue mainQueue]];// 创建一个URL
NSURL *url = [NSURL URLWithString:@”http://localhost:8080/MJServer/resources/test.mp4“];
NSURLSessionDownloadTask *task = [session downloadTaskWithURL:url];[task resume];
}
- (void)URLSession:(NSURLSession )session downloadTask:(NSURLSessionDownloadTask )downloadTask didFinishDownloadingToURL:(NSURL *)location {
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [caches stringByAppendingPathComponent:downloadTask.response.suggestedFilename];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager moveItemAtPath:location.path toPath:filePath error:nil];
}
- (void)URLSession:(NSURLSession )session downloadTask:(NSURLSessionDownloadTask )downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite {
double progress = (double)totalBytesWritten / totalBytesExpectedToWrite;
NSLog(@”已经下载了:%f”, progress);
}
NSURLSession的应用相关推荐
- 使用 NSURLSession 开发一个支持后台下载和断点续传的下载工具
NSURLSession 是 iOS 系统提供给我们的原生网络操作库,它提供了网络操作相关的一系列特性支持,比如缓存控制,Cookie管理,HTTP 认证处理等等,是一套整体的网络操作处理解决方案. ...
- NSURLSession简介与入门
NSURLSession 也不是什么新鲜话题了,但之前一直只是简单的使用却没有总结过其用法及注意事项,现在就整理一下关于NSRULSession的相关知识. 基本组成 使用需要配合三个基本的对象类型, ...
- iOS开发之网络编程--1、NSURLSession的基本使用
前言:学习NSURLSession的使用之前,先学习一篇关于NSURLSession的好文章<From NSURLConnection to NSURLSession>或者是国内的译文&l ...
- 网络之NSURLSession
NSUrlSession参考的这篇博客,自己也调试了它的代码:http://www.it165.net/pro/html/201406/15223.html ,对NSUrlSession还不太理解,先 ...
- NSURLSession使用说明及后台工作流程分析
NSURLSession简介 NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnect ...
- swift3.0:NSURLSession的使用
一.说明 NSURLSession是OC中的会话类,在Swift中变成URLSession类,它们的实现方式是一样的,下面的示例就Swift语法进行讲解和介绍. 二.介绍: URLSession 类支 ...
- NSURLSession和NSURLConnection
iOS9.0之后NSURLConnection被注销,采用NSURLSession,先介绍NSURLSession,然后介绍NSURLConnection 1.NSURLSession: post请求 ...
- 关于nsurlsession
nsurlsession 是ios7新出的api,用来代替nsurlconnection .话不多说. nsurlsession包含三个方面1,NSURLSessionConfiguration ,2 ...
- iOS imageio nsurlsession 渐进式图片下载
一.图片常用加载格式分两种 一般线性式 和交错/渐进式 自上而下线性式 先模糊再清晰 就概率上而言线性式使用最多,应为他所占空间普片比渐进式小.而这两种方式对于app端开发人员无需关心,这种图片存储格 ...
- NSURLSession
2019独角兽企业重金招聘Python工程师标准>>> //1.创建一个网络处理的会话,取得一个全局的会话//好处(相对于NSURLSession)1,多个网络任务可以通过sessi ...
最新文章
- 水晶报表printmode的ActiveX打印
- MultiBox_Loss bug改进
- 模拟input type=file
- 新发传染病临床案例研究 Emerging Infectious Diseases. Clinical Case Studies
- html5 数字滚动选择器,Odometer使用JavaScript和CSS制作数字滑动效果
- VMware VIC
- 在O(1)的时间内计算n个整数落在区间[a,b]的个数(预处理时间为O(n+k))
- 如何在Swift中使用CoreData设置有用的自动完成UITextField
- 博客专题计划:《在实践中深入理解常见网络协议》
- Java并发:五种线程安全类型、线程安全的实现、枚举类型
- linux c mysql 增删改查_Linux C语言连接MySQL 增删改查操作
- nginx常见配置详解
- 一核一g负载均衡不能超过多少_多核程序设计(考试题)
- 【Docker】拉取Oracle 11g镜像配置
- 淘宝中的一些基本CSS代码
- python栈是什么意思_Python算法之栈(stack)的实现
- 如何利用Vue3管理系统实现动态路由和动态侧边菜单栏
- 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(8)
- spring 定时器时间配置
- ML之VC维:VC维(Vapnik-Chervonenkis Dimension)理论的概述(衡量模型复杂度和预测能力的指标)的简介、案例理解之详细攻略
热门文章
- 机器学习之基于SVM实现多类人脸识别
- Codeforces Round #647 (Div. 2) - Thanks, Algo Muse!(AB)
- java反射成员变量_java反射之成员变量的反射
- 管理维护MySQL的SQL语句有哪些_MySQL常用管理SQL语句
- linux7怎么安装yum,centos7下怎么安装yum
- tornado服务器动态文件,tornado 实现服务器消息推送功能
- php dirtoarray,PHP Ds\Stack toArray()用法及代码示例
- cpu和内存之间——地址映射
- 常用串口调试工具比较
- 深度学习领域专业词汇_深度学习时代的人文领域专业知识