NSURLSession基本内容

    <1> NSURLSession 简介:
    {
        NSURLSession 是 iOS 7.0 之后推出的网络解决方案!用于替代 NSURLConnection,  针对下载/上传等复杂的网络操作提供了专门的解决方案!
    
        NSURLSession 使用更加简单/方便!
    
    }
    <2> NSURLSession 中新增的内容:
    {
        1> 全局的 NSURLSession 对象: 所有的网络会话都由一个 NSURLSession 对象发起, 实例化一个 NSURLSession 对象有两种方法:
            {
                *1 对于简单的,不需要监听网络请求过程的网络会话来说,使用系统提供的,全局的 NSURLSession 单利对象:
            
                NSURLSession *session = [NSURLSession sharedSession];
            
                *2 如果需要监听网络进度,需要自定义一个 NSURLSession 对象,并且设置代理!这时还需要一个 NSURLSessionConfiguration,可以设置全局的网络访问属性.
            
                NSURLSessionConfiguration *cfg = [NSURLSessionConfiguration defaultSessionConfiguration];
            
                NSURLSession *session = [NSURLSession sessionWithConfiguration:cfg delegate:self delegateQueue:[NSOperationQueue mainQueue]];
            }
        2> 网络任务(Task);在 NSURLSession 中,有三种网络任务类型.
            {
                *1 用于非文件下载的普通的 GET/POST请求 NSURLSessionDataTask.实例化对象有以下2种方法:
                {
                    // 1> 通过一个 request 实例化普通网络任务,增加完成之后的 block 回调,使用比较多.
                    NSURLSessionDataTask *task = [self.session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                        
                    }];
                
                    // 2> 通过一个 url 实例化普通网络任务,增加完成之后的 block 回调,使用比较多.
                    NSURLSessionDataTask *task = [self.session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                    
                    }];
                }
                *2 用于文件下载的网络任务 NSURLSessionDownloadTask (无论文件大小,下载都使用 NSURLSessionDownloadTask) ,实例化对象有以下三种方法:
                {
                    // 1> 通过一个 request 实例化下载网络任务,增加任务完成之后的 block 回调,一般用在小文件下载.

                    NSURLSessionDownloadTask *task = [self.session downloadTaskWithRequest:request completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
                        
                    }];

                    // 2> 通过一个 url 实例化下载网络任务,增加任务完成之后的 block 回调,一般用在小文件下载.
                    NSURLSessionDownloadTask *task = [self.session downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
                        
                    }];
                
                    // 3> 通过之前下载的数据 ResumeData ,实例化一个下载任务,用于断点续传.
                    NSURLSessionDownloadTask *task = [session downloadTaskWithResumeData:ResumeData completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
                        
                    }];
                }
                *3 用于文件上传的网络任务 NSURLSessionUploadTask.
                {
                    // 目前,只有通过这种方式实例化的下载任务,才能实现文件上传.依然需要拼接数据.
                
                    NSURLSessionUploadTask *task = [session uploadTaskWithRequest:request fromData:fromData completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                        //
                    }]
                }
            }
    }
    <3> NSURLSession 的使用分为三步:
    {
        1> 实例化一个 NSURLSession 对象 session ;
        NSURLSession *session = [NSURLSession sharedSession];

        2> 通过 NSURLSession 对象,实例化对应的网络任务 task;
        NSURLSessionDataTask *task = [session dataTaskWithRequest:request];

        3> 开启网络任务
        [task resume];
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值