NSURLSession的介绍与基本用法

对比

NSURLConnection中的存在很多问题,例如:

NSURLConnection是IOS2.0推出的古老而又经典的网络解决方案。

复杂的网络请求需要使用代理进行实现。

代理方式默认在主线程工作。

只提供了start&cancel方法,不能暂停。

在使用多线程时需要使用运行循环。

-------------------------------------------

NSURLSessionIOS7中新的网络接口,,与NSURLConnection是并列的。

当程序在前台时,NSURLSession与NSURLConnection大部分可以互相替代。

NSURLSession支持后台网络操作,除非用户强行关闭。

NSURLSession提供的功能:

通过URL将数据下载到内存。

通过URL将数据下载的到文件系统。

将数据上传到指定URL。

在后台完成上述功能。

对于小型数据,例如用户登录、下载小图像、JSON&XML仍然使用NSURLConnection的异步或者同步方法即可。

另外,我们不用再考虑NSURLSession的线程问题,因为苹果已经为我们做好了。

新建工程,代码如下:

//
//  ViewController.m
//  NSURLSession的基本使用
//
//  Created by apple on 15/10/30.
//  Copyright (c) 2015年 LiuXun. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
/**
 使用NSURLSession肯定是异步,在子线程做耗时操作
 我们只需要创建一个Session,发起一个任务,让任务resume就OK了
 */

- (void)viewDidLoad {
    [super viewDidLoad];
    // 1. url
    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/videos.json"];
    
    // 3. 由Session发起任务——异步操作
    [[[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        
        // 反序列化
        id result = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
        NSLog(@"%@", result);
        
        // 在主线程更新UI
        dispatch_async(dispatch_get_main_queue(), ^{
            NSLog(@"更新UI");
        });
    }] resume];
    
    NSLog(@"XXXXXX");
}

-(void)test1
{
    // 1. url
    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/videos.json"];
    
    // 2. 创建一个会话Session
    // 苹果直接提供了一个全局的Session(单例)
    NSURLSession *session = [NSURLSession sharedSession];
    
    // 3. 由Session发起任务
    NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        
        // 反序列化
        id result = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
        NSLog(@"%@", result);
    }];
    
    // 需要把任务开启。任务默认都是挂起的。
    [task resume];
    
    
}
@end
运行结果如下:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NSURLSessionCorrectedResumeData是一个iOS开发中的类,用于处理网络请求的断点续传功能。 在网络请求过程中,由于各种原因(如网络不稳定或用户手动停止请求),请求可能会中断。为了方便用户继续中断的请求,苹果提供了NSURLSessionCorrectedResumeData来恢复中断的请求。 NSURLSessionCorrectedResumeData是一个二进制数据,它包含了中断请求的具体信息,如请求的URL、请求的方法、请求头信息、请求体等。开发者可以将这个数据保存到本地,以便在下次启动应用时重新发起请求。 当应用再次启动并需要继续中断的请求时,开发者可以使用NSURLSession的resumeData属性来读取之前保存的NSURLSessionCorrectedResumeData数据。 然后,开发者可以通过NSURLSession的downloadTask(withCorrectedResumeData:completionHandler:)方法来恢复请求。这个方法会根据传入的NSURLSessionCorrectedResumeData创建一个下载任务,并在下载完成后调用回调函数。 需要注意的是,正确使用NSURLSessionCorrectedResumeData需要遵循一些特定的规则。比如,只有之前使用NSURLSession的downloadTask方法发起的请求才能使用相关的恢复方法,并且不能保证100%的恢复成功。 总结来说,NSURLSessionCorrectedResumeData提供了一种方便的方式来处理网络请求中的断点续传功能,并且提高了用户体验。通过保存和恢复NSURLSessionCorrectedResumeData数据,开发者可以更加灵活地处理中断的请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值