IOS开发--网络通信NSURLSession

先来一张图片:


一:简单的使用:拿来之前的JSON反序列化代码

- (void)asyncGet
{
    //1.创建url
    NSURL  * url = [NSURL URLWithString:@"http://127.0.0.1/videos.json"];
     
    //2.创建请求
    NSURLRequest * requese = [NSURLRequest requestWithURL:url];
     
    //3.
    NSURLSession * session = [NSURLSession sharedSession];
     
    //4.创建任务
    NSURLSessionDataTask * dataTask = [session dataTaskWithRequest:requese completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
         
        //反序列化
        // 不用管options的参数设置,使用默认的值0即可
        id result = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
        // NSLog(@"reslut = %@-----%@",result, [result class]);
         
        _videos = result;
         
 
        NSLog(@"asynGet---%@",[NSThread currentThread]);
         
        //在主队列里面执行(为了测试下多线程)
        dispatch_async(dispatch_get_main_queue(), ^{
            [self videosToObject];
        });
         
         
    }];
     
    //5.创建任务后不会立即执行,调用resume立即执行
    [dataTask resume];
 
}


二:NSURLSession下载文件并解压缩到指定文件夹。其中用到了第三方框架SSZipArchive。

//
//  ViewController.m
//  NSURLSession下载解压文件
//
//  Created by aslan on 16/3/16.
//  Copyright © 2016年 aslan. All rights reserved.
//

#import "ViewController.h"
#import "SSZipArchive.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    

}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
        [self asyncGet];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)asyncGet
{
    //1.创建url
    NSURL * url = [NSURL URLWithString:@"http://127.0.0.1/itcast/images.zip"];
    
    //2.创建请求
    NSURLRequest * request = [NSURLRequest requestWithURL:url];
    
    //3.
    NSURLSession * session = [NSURLSession sharedSession];
    
    //4.创建任务
    
    NSURLSessionDownloadTask * downloadTask = [session downloadTaskWithRequest:request completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSLog(@"文件路径 %@",location.path);
        
        NSString * cacheDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
        NSLog(@" %@",cacheDir);
        
        
        /**
         FileAtPath:要解压缩的文件
         Destination: 要解压缩到的路径
         */
        //把文件解压缩到沙盒里面
        [SSZipArchive unzipFileAtPath:location.path toDestination:cacheDir];

    }];
    
    [downloadTask resume];
}

@end

解压缩Demo测试代码:

http://www.oschina.net/code/snippet_2290420_54751




你可能感兴趣的:(IOS开发--网络通信NSURLSession)