-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

//[self getTest];

[self postTest];

}

-(void) getTest{

NSURLSession *session = [NSURLSession sharedSession];

NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/video?type=JSON"];

NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

NSLog(@"%d",data.length);

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];

NSLog(@"%@",dict);

}];

[task resume];

}

-(void) postTest{

NSURLSession *session = [NSURLSession sharedSession];

//url = http://120.25.226.186:32812/login?username=123&pwd=123&type=JSON

NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login"];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

request.HTTPMethod=@"POST";

request.HTTPBody = [@"username=123&pwd=123&type=JSON" dataUsingEncoding:NSUTF8StringEncoding];

NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];

NSLog(@"___%@",dict);

}];

[task resume];

}

  1. - (void)downloadTask2
  2. {
  3. NSURLSessionConfiguration *cfg = [NSURLSessionConfiguration defaultSessionConfiguration];
  4.  
  5. // 1.得到session对象
  6. NSURLSession *session = [NSURLSession sessionWithConfiguration:cfg delegate:self delegateQueue:[NSOperationQueue mainQueue]];
  7.  
  8. // 2.创建一个下载task
  9. NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/resources/test.mp4"];
  10. NSURLSessionDownloadTask *task = [session downloadTaskWithURL:url];
  11.  
  12. // 3.开始任务
  13. [task resume];
  14.  
  15. // 如果给下载任务设置了completionHandler这个block,也实现了下载的代理方法,优先执行block
  16. }
  17.  
  18. #pragma mark - NSURLSessionDownloadDelegate
  19. /**
  20. * 下载完毕后调用
  21. *
  22. * @param location 临时文件的路径(下载好的文件)
  23. */
  24. - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
  25. {
  26. // location : 临时文件的路径(下载好的文件)
  27.  
  28. NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
  29. // response.suggestedFilename : 建议使用的文件名,一般跟服务器端的文件名一致
  30.  
  31. NSString *file = [caches stringByAppendingPathComponent:downloadTask.response.suggestedFilename];
  32.  
  33. // 将临时文件剪切或者复制Caches文件夹
  34. NSFileManager *mgr = [NSFileManager defaultManager];
  35.  
  36. // AtPath : 剪切前的文件路径
  37. // ToPath : 剪切后的文件路径
  38. [mgr moveItemAtPath:location.path toPath:file error:nil];
  39. }
  40.  
  41. /**
  42. * 恢复下载时调用
  43. */
  44. - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes
  45. {
  46.  
  47. }
  48.  
  49. /**
  50. * 每当下载完(写完)一部分时就会调用(可能会被调用多次)
  51. *
  52. * @param bytesWritten 这次调用写了多少
  53. * @param totalBytesWritten 累计写了多少长度到沙盒中了
  54. * @param totalBytesExpectedToWrite 文件的总长度
  55. */
  56. - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
  57. {
  58. double progress = (double)totalBytesWritten / totalBytesExpectedToWrite;
  59. NSLog(@"下载进度---%f", progress);
  60. }
  61.  
  62. #pragma mark ------------------------------------------------------------------
  63. /**
  64. * 下载任务:不能看到下载进度
  65. */
  66. - (void)downloadTask
  67. {
  68. // 1.得到session对象
  69. NSURLSession *session = [NSURLSession sharedSession];
  70.  
  71. // 2.创建一个下载task
  72. NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/resources/test.mp4"];
  73. NSURLSessionDownloadTask *task = [session downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
  74. // location : 临时文件的路径(下载好的文件)
  75.  
  76. NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
  77. // response.suggestedFilename : 建议使用的文件名,一般跟服务器端的文件名一致
  78. NSString *file = [caches stringByAppendingPathComponent:response.suggestedFilename];
  79.  
  80. // 将临时文件剪切或者复制Caches文件夹
  81. NSFileManager *mgr = [NSFileManager defaultManager];
  82.  
  83. // AtPath : 剪切前的文件路径
  84. // ToPath : 剪切后的文件路径
  85. [mgr moveItemAtPath:location.path toPath:file error:nil];
  86. }];
  87.  
  88. // 3.开始任务
  89. [task resume];
  90. }

  

NSURLSession的用法的更多相关文章

  1. AFNetworking 3.0 源码解读(五)之 AFURLSessionManager

    本篇是AFNetworking 3.0 源码解读的第五篇了. AFNetworking 3.0 源码解读(一)之 AFNetworkReachabilityManager AFNetworking 3 ...

  2. iOS开发之网络编程--1、AFNetwork 3.x 的所有开发中常用基础介绍

    前言:第三方网络请求框架中AFNetwork 3.x收欢迎程度相当高的: 由于iOS 7 和 Mac OS X 10.9 Mavericks 中一个显著的变化就是对 Foundation URL 加载 ...

  3. (一二七)NSURLSession的基本用法 下载与数据获取

    简介 NSURLSession是苹果官方提供的一系列网络接口库,使用他们可以轻松实现下载和数据获取等任务.在上一篇文章中,我们介绍了使用NSURLConnection下载文件和断点续传的功能,实现起来 ...

  4. iOS开发之Alamofire源码解析前奏--NSURLSession全家桶

    今天博客的主题不是Alamofire, 而是iOS网络编程中经常使用的NSURLSession.如果你想看权威的NSURLSession的东西,那么就得去苹果官方的开发中心去看了,虽然是英文的,但是结 ...

  5. iOS网络学习之“远离NSURLConnection 走进NSURLSession”

    目前,在iOS的开发中,NURLConnection已经成为了过去式,现在的NSURLConnection已经deprected(iOS7之后),取而代之的是NSURLSession.而且AFNetw ...

  6. ios NSURLSession(iOS7后,取代NSURLConnection)使用说明及后台工作流程分析

    NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...

  7. AFNetworking 与 NSURLSession

    转载自:http://blog.sina.com.cn/s/blog_8157560c0101kt7h.html 1. 也就是说在IOS 7.1 之后你想用网络请求的话有两种途径,NSUrlSessi ...

  8. 【转载】NSURLSession教程

    原文:http://www.raywenderlich.com/51127/nsurlsession-tutorial 查理·富尔顿 2013年10月9日, 推特 注意从雷 :这是一个缩写版的一章 i ...

  9. NSURLSession 所有的都在这里(一)

    这篇文章会有什么? 在这篇文章中把NSURLSession.h文件集体梳理一遍,把里面的每个属性.代理和方法都拿出来说说,通过这篇文章我相信对于NSURLSession这一块的东西会梳理的比较全面一点 ...

随机推荐

  1. 心脏滴血漏洞复现(CVE-2014-0160)

    心脏滴血漏洞简述 2014年4月7日,OpenSSL发布安全公告,在OpenSSL1.0.1版本至OpenSSL1.0.1f Beta1版本中存在漏洞,该漏洞中文名称为心脏滴血,英文名称为HeartB ...

  2. [考试反思]0921csp-s模拟测试49:困顿

    太弱.还是太弱. 拉不开分差,离第一机房分数线估计还是300多分. 但是,还是要骂:XX出题人. 部分分非常少且没有意义,T1基本只有0/纯暴力20/100三个档, T2正解是n2但是n3一分不给,还 ...

  3. [考试反思]0727NOIP模拟测试9

    啊哈?水到一个rk1? 谢谢诸位大佬放水让我这种人体验到了rk1的滋味. 怪怪的滋味.不太像我的水平. 其实这次考试心态已经佛了,刚意识到前6次考试累计的挺高的分数被清空了,7,8两场又爆炸了... ...

  4. 大数据之路day02_1--运算符

    运算符这一节主要是介绍算数运算符.赋值运算符.比较运算符.逻辑运算符.三元运算符.接下来一一介绍. 1.算数运算符 ++ 和 -- 的用法 例如:a++ 和 ++a的区别 %的应用场景(取模其实就是取 ...

  5. win10系统任务栏点击没有反应

    今天碰到了一个神奇的bug任务栏上的图标怎么也没反应,鼠标点击不了,win+R命令行也出来不了. 经过一番研究,发现CTRL+ALT+DEL,可以打开任务管理器.所以来了一番操作: 1.先打开任务管理 ...

  6. vscode react自动补全html标签

    第一步:点击上图左下角设置,找到Settings,搜索includeLanguages 第二步:如上图点击图中红色区域,settings.json 第三部:把代码加入,如上图红色选择区域. " ...

  7. 爬虫实践--CBA历年比赛数据

    闲来无聊,刚好有个朋友来问爬虫的事情,说起来了CBA这两年的比赛数据,做个分析,再来个大数据啥的.来了兴趣,果然搞起来,下面分享一下爬虫的思路. 1.选取数据源 这里我并不懂CBA,数据源选的是国内某 ...

  8. PowerMock学习之PoweMock的入门(二)

    前言 在上一篇<PowerMock学习之PoweMock的入门(一)>文章中,已经简单提及一些关于powermock的用法,但是入门还未完,我还要坚持把它学习并坚持更新到博客中. Mock ...

  9. RabbitMQ学习笔记之五种模式及消息确认机制

    本文详细介绍简单模式Simple.工作模式Work.发布订阅模式Publish/Subscribe.Topic.Routing. Maven依赖引用 <dependencies> < ...

  10. bash:双引号和单引号

    单引号.双引号都能引用字符和字符串 单引号:'$i'仅仅是字符,没有变量的意思了 双以号:变量等能表示出来