一 概述

  • NSURLSessionDataTask:普通的Get\Post任务
  • NSURLSessionDownloadTask:文件下载任务
  • NSURLSessionUploadTask:文件上传

二 NSURLSessionDataTask

2.1 SessionDataTask-Get请求

-(void)URLTaskGet
{NSURLSession *session=[NSURLSession sharedSession];NSURL *url=[NSURL URLWithString:@"http://localhost:8080/MJServer/video"];NSURLSessionDataTask *task=  [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {//NSLog(@"%d",data.length);NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:nil error:nil];NSLog(@"%@",dict);}];//3-开始任务[task resume];
}

2.2 SessionDataTask-Post请求

-(void)DataTaskPost
{NSURLSession *session=[NSURLSession sharedSession];NSURL *url=[NSURL URLWithString:@"http://localhost:8080/MJServer/login"];NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];request.HTTPMethod=@"POST";NSString *param=[NSString stringWithFormat:@"username=%d&pwd=%d",123,123];request.HTTPBody=[param dataUsingEncoding:NSUTF8StringEncoding];NSURLSessionDataTask *task=[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {    NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:nil error:nil];NSLog(@"%@",dict);}];//3-开始任务[task resume];
}

三 NSURLSessionDownloadTask

3.1 downloadTaskWithURL

-(void)downloadTaskURL
{//1-得到session对象NSURLSession *session=[NSURLSession sharedSession];//2-创建一个TaskNSURL *url=[NSURL URLWithString:@"http://localhost:8080/MJServer/resources/videos/minion_01.mp4"];NSURLSessionDownloadTask *task= [session downloadTaskWithURL:url completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {NSLog(@"下载完毕---%@",location);//location:临时文件的路径(下载好的文件)//将临时文件剪切或者复制caches文件夹NSString *caches=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];NSString *file=[caches stringByAppendingPathComponent:response.suggestedFilename];NSFileManager *mgr=[NSFileManager defaultManager];//AtPath:剪切前的文件路径//toPath:剪切后的文件路径[mgr moveItemAtPath:location.path toPath:file error:nil];}];//3-开始任务[task resume];
}

3.2 downloadTaskWithURLNoHandler

//1-代理
@interface ViewController ()<NSURLSessionDownloadDelegate>
@end//2-task
-(void)downloadTaskWithURLNoHandler
{NSURLSessionConfiguration *cfg=[NSURLSessionConfiguration defaultSessionConfiguration];//得到session对象NSURLSession *session=[NSURLSession sessionWithConfiguration:cfg delegate:self delegateQueue:[NSOperationQueue mainQueue]];NSURL *url=[NSURL URLWithString:@"http://localhost:8080/MJServer/resources/videos/minion_01.mp4"];//如果给下载任务设置了completionHandler这个block,也实现了下载的代理方法,优先执行blockNSURLSessionDownloadTask *task=[session downloadTaskWithURL:url];
//    NSURLSessionDownloadTask *task=[session downloadTaskWithURL:url completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//        NSLog(@"下载完毕");
//
//    }];//开始任务[task resume];
}
//3-delegate
#pragma mark-NSURLSessionDownloadDelegate
//下载完毕
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
{NSLog(@"下载didFinishDownloadingToURL--%@",location);NSString *caches=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];NSString *file=[caches stringByAppendingPathComponent:downloadTask.response.suggestedFilename];NSFileManager *mgr=[NSFileManager defaultManager];  //AtPath:剪切前的文件路径//toPath:剪切后的文件路径[mgr moveItemAtPath:location.path toPath:file error:nil];
}
//恢复下载
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes
{
}
//下载任务,写完一部分就调用
//bytesWritten:本次写了多少
//totalBytesWritten:累计写了多少长度到沙盒中
//totalBytesExpectedToWrite:文件的总长度-(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);
}

3.3 效果图

IOS开发之——下载- NSURLSession(06)相关推荐

  1. IOS开发基础之NSURLSession的使用

    IOS开发基础之NSURLSession的使用 服务器我们选用的是tomcat服务器. 所有项目info.plist加入 <key>NSAppTransportSecurity</k ...

  2. iOS开发·网络下载总结(NSURLConnection,NSURLSession,AFNetworking)

    0. 前言 iOS的开发中的网络下载方式包括NSData(最原始,实际开发基本不会用),NSURLConnection(古老又过气的苹果原生网络框架),NSURLSession(现在流行的苹果网络框架 ...

  3. Flash ios 开发cookbook 下载(PDF)

    下载地址: Packtpub.Flash.iOS.Apps.Cookbook.Feb.2012.pdf 转载于:https://www.cnblogs.com/flashweb/archive/201 ...

  4. [iOS开发] 电子书下载链接

    <Pro iOS Table Views>  下载地址:http://ebook.jiani.info/e_books/52 <Head First iPhone Developme ...

  5. 玩转iOS开发:NSURLSession讲解(三)

    文章分享至我的个人技术博客: https://cainluo.github.io/14986211698053.html 前言 虽然前面两讲都是说了NSURLSession的一些理论上的知识, 但我们 ...

  6. 文顶顶iOS开发博客链接整理及部分项目源代码下载

    网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程却很难找.如果你是初学者,在学习了斯坦福iOS7公开课 ...

  7. iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载

    前言:iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载是在前篇iOS开发之网络编程--使用NSURLConnection实现大文件下载的基础上进行    断点续传的设置 ...

  8. iOS开发网络篇—多线程断点下载

    iOS开发网络篇-多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始, ...

  9. 【热门收藏】iOS开发人员必看的精品资料(100个)——下载目录

    [热门收藏]iOS开发人员必看的精品资料(100个)--下载目录 iPhone.iPad产品风靡全球,巨大的用户群刺激着iOS软件开发需求,然而国内人才缺口很大,正处于供不应求的状态,ios开发前景大 ...

最新文章

  1. php 添加行_php 多行数据同时插入
  2. vmware迁移问题
  3. 快头条月增迅猛超微视 三四线城市“流量炼金”的上限在哪?
  4. Ubuntu增加(swap)交换分区
  5. RxJS + React hooks
  6. 信息安全的技术研究相关站点
  7. python语法使用方法_Python语法基础
  8. windows编译librtmp
  9. 美国的人民币汇率谋略
  10. ElasticSearch配置集群
  11. 女孩学医好还是学计算机好,女生选择学医好吗 学医有多累
  12. 2019清华计算机考研,2019清华计算机考研总分是多少
  13. 软考-中级-网络工程师-笔记-第1章-计算机网络概论
  14. IIS站点配置和DW CS6连接Access数据库
  15. stm32时钟问题简单介绍
  16. SSM+Java体育用品库存管理系统 毕业设计-附源码211712
  17. powerbi日期转化error
  18. 软件进度管理的基本原则和进度安排
  19. 果然,ChatGPT还是被拿去搞黄色了...
  20. 微信祝福贺卡小程序V4.7.14

热门文章

  1. CSS3(background)背景属性与文字阴影
  2. Android 实现加载动画
  3. 国内永久免费下载免费网站监控服务测评:阿里云监控、百度云观测等
  4. 2021015979李庚奇实验三
  5. 3D游戏场景DEMO——添加水体效果
  6. 开源的Remoting框架:Cinnamon
  7. 信贷产品的贷前获客营销策略搭建
  8. Python,双色球模拟改进版
  9. 深度盘点!ChatGPT 还能这么用?
  10. 欢乐地球NFT游戏火爆开启,平台积分OFE暴涨100倍