NSURLsessionTask

  1 #import "ViewController.h"
  2
  3 @interface ViewController ()
  4
  5 @property(nonatomic,weak) IBOutlet UIImageView* imageView;
  6
  7 @end
  8
  9
 10 @implementation ViewController
 11
 12 - (void)viewDidLoad {
 13     [super viewDidLoad];
 14     // Do any additional setup after loading the view, typically from a nib.
 15     self.imageView.backgroundColor = [UIColor grayColor];
 16 }
 17
 18 -(IBAction)sessionTask:(id)sender{
 19
 20     NSString* urlStr1 = @"http://iappfree.candou.com:8080/free/applications/limited?currency=rmb&page=3";
 21     NSString* urlStr2 = @"http://photo.candou.com/i/114/826ea823e8ffe792a6fda9e126f6c404";
 22
 23     //进行dataTask 的任务
 24 //    [self downloadWithDataTask:urlStr1];
 25
 26     //进行downloadTask 的任务
 27     [self downloadWithDownloadTask:urlStr2];
 28
 29     //上传UploadTask任务
 30 //    [self uploadWithUploadTask:urlStr1];
 31
 32 }
 33 /**
 34      根据职能不同Task有三种子类:
 35      NSURLSessionUploadTask:上传用的Task,传完以后不会再下载返回结果;
 36      NSURLSessionDownloadTask:下载用的Task,下载内容到硬盘上;
 37      NSURLSessionDataTask:可以上传内容,上传完成后再进行下载,存储为NSData格式。
 38  */
 39 #pragma mark -三种Task任务的基本演示-
 40
 41 //可以上传内容,上传完成后再进行下载,存储为NSData格式
 42 -(void)downloadWithDataTask:(NSString*)urlStr{
 43
 44     NSURL *url = [NSURL URLWithString:urlStr];
 45
 46     NSURLRequest *request = [NSURLRequest requestWithURL:url];
 47     //使用一个系统默认的会话(缓存策略、cookie、鉴权等使用默认)
 48     NSURLSession *session = [NSURLSession sharedSession];
 49     //接受数据类的任务
 50     NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
 51         NSLog(@"data:%@",data);
 52         NSLog(@"response:%@",response);
 53         NSLog(@"error:%@",error);
 54     }];
 55     //执行任务
 56     [dataTask resume];
 57 }
 58
 59 //下载用的Task,下载内容到硬盘上
 60 -(void)downloadWithDownloadTask:(NSString*)urlStr{
 61
 62     NSURL *url = [NSURL URLWithString:urlStr];
 63
 64 //    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:10];
 65     NSURLRequest *request = [NSURLRequest requestWithURL:url];
 66     //使用一个系统默认的会话(缓存策略、cookie、鉴权等使用默认)
 67     NSURLSession *session = [NSURLSession sharedSession];
 68     //下载类的任务
 69     NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithRequest:request completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
 70
 71         NSLog(@"location:%@",location);
 72         NSLog(@"response:%@",response);
 73         NSLog(@"error:%@",error);
 74
 75         NSData *data = [NSData dataWithContentsOfURL:location];
 76 //        self.imageView.image = [UIImage imageWithData:data];
 77
 78         //获取Document目录
 79         NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)  firstObject];
 80         //将字符串路径转换成URL
 81         NSURL *documentUrl = [NSURL fileURLWithPath:documentPath];
 82         //更改路径,把最后的文件追加到自己设定的路径后,组成新的路径
 83         NSURL *newUrl = [documentUrl URLByAppendingPathComponent:[location lastPathComponent]];
 84
 85         NSLog(@"newUrl:%@",newUrl);
 86         //将返给路径的文件夹移动到新的路径下
 87         [[NSFileManager defaultManager] moveItemAtURL:location toURL:newUrl error:nil];
 88     }];
 89     //执行任务
 90     [downloadTask resume];
 91 }
 92
 93 //上传用的Task,传完以后不会再下载返回结果
 94 -(void)uploadWithUploadTask:(NSString*)urlStr{
 95
 96     NSURL *url = [NSURL URLWithString:urlStr];
 97
 98     NSURLRequest *request = [NSURLRequest requestWithURL:url];
 99     NSData *data = nil;
100
101     //使用一个系统默认的会话(缓存策略、cookie、鉴权等使用默认)
102     NSURLSession *session = [NSURLSession sharedSession];
103     //上传类的任务
104     NSURLSessionUploadTask *uploadTask = [session uploadTaskWithRequest:request fromData:data completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
105         NSLog(@"data%@",data);
106         NSLog(@"response%@",response);
107         NSLog(@"error%@",error);
108     }];
109     //执行任务
110     [uploadTask resume];
111 }
112
113
114
115 - (void)didReceiveMemoryWarning {
116     [super didReceiveMemoryWarning];
117     // Dispose of any resources that can be recreated.
118 }
119
120 @end

时间: 2024-10-24 09:08:53

NSURLsessionTask的相关文章

iOS边练边学--NSURLSession、NSURLSessionTask的介绍与使用以及url中包含了中文的处理方法

一.NSURLSession.NSURLSessionTask的使用步骤 首先创建NSURLSession对象 通过NSURLSession对象创建对应的任务 <1>NSURLSessionDataTask的GET和POST  -- 以及url中包含了中文的解决办法 <2>NSURLSessionDownloadTask实现小文件的下载 <3>NSURLSessionDownloadTask实现大文件的断点下载 -- 暂时没有实现退出程序后的文件续传 1 #import

iOS网络-NSURLSessionTask简单介绍

NSURLSessionTask也可以用来发送网络请求, 相对NSURLConnection, 推荐使用NSURLSessionTask. a.NSURLSessionTask是一个抽象类,本身不能使用,只能使用它的子类 b.NSURLSessionDataTask\NSURLSessionUploadTask\NSURLSessionDownloadTask 基本使用(GET/POST)跟NSURLConnection类似: -(void)get1 { //1.创建请求路径 NSURL *ur

iOS —— NSURLSessionTask

本章主要介绍抽象类 NSURLSessionTask 的一些基本属性和代理 一.NSURLSessionTask 1. NSURLSessionTask 是所有请求任务的基类,也是一个抽象类,所以不能通过它来创建具体的网络请求 task 2. 系统为每个 task 分配的唯一标识符 @property (readonly) NSUInteger taskIdentifier; 3. 当前 task 正在访问的请求对象 @property (nullable, readonly, copy) NS

AFNetworking 3.0x版本最新特性

AFNetworking是一款在OS X和iOS下都令人喜爱的网络库.为了迎合iOS新版本的升级, AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持.如果你的项目以前使用过这些API,建议您立即升级到基于 NSURLSession 的API的AFNetworking的版本.本指南将引导您完成这个过程. 本指南是为了引导使用AFNetworking 2.x升级到最新的版本API,以达到过渡的目的,并且解释了新增和更改的设计结构. 新设备要求: iO

iOS开发网络篇—发送GET和POST请求(使用NSURLSession)

iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConnection的使用,如有需要了解NSURLConnection如何发送请求. 详细信息,请参考:http://www.cnblogs.com/wendingding/p/3813706.html 3)本文示例代码发送的请求均为http请求,已经对info.plist文件进行配置. 如何配置,请参考:

iOS 提交form表单,上传图片

之前不会用,总感觉很难,用后感觉不是太难,本文只是简单的讲一下怎么使用的, //实例话对象 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer.timeoutInterval = 20; manager.responseSerializer = [[AFHTTPResponseSerializer alloc] init]; manager.responseSerial

如何使用SSL pinning来使你的iOS APP更加安全

SSL pinning在构建一个高度安全的移动APP上扮演了一个十分重要的角色.然而如今好多用户在使用无线移动设备去访问无数不安全的无线网络. 这篇文章主要覆盖了SSL pinning 技术,来帮助我们处理最常见的安全攻击--中间人攻击(MITM). SSL(Secure Socket Layer 安全套接字层)确保客户端-服务器在HTTP请求的方式上将通讯内容加密----被指定为HTTPS(SSL上的HTTP).这种加密体系是基于PKI(Pbulic Key Infrastructure,公钥

iOS App Extensions

一.扩展概述 扩展(Extension)是iOS 8中引入的一个非常重要的新特性.扩展让app之间的数据交互成为可能.用户可以在app中使用其他应用提供的功能,而无需离开当前的应用. 在iOS 8系统之前,每一个app在物理上都是彼此独立的,app之间不能互访彼此的私有数据. 而在引入扩展之后,其他app可以与扩展进行数据交换.基于安全和性能的考虑,每一个扩展运行在一个单独的进程中,它拥有自己的bundle, bundle后缀名是.appex.扩展bundle必须包含在一个普通应用的bundle

NSURLSession

-(void)get{    NSURLSession * session=[NSURLSession sharedSession];    NSURLSessionTask * task=[session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.xiufa.com/BJUI/plugins/kindeditor_4.1.10/attached/image/2016042