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