NSURLSession

替代

可惜

在iOS9.0之后 之前使用的NSURLConnection过期 苹果官方推荐使用NSURLSession替代NSURLConnection

优势

  • NSURLSession支持http2.0协议
  • 处理下载任务的时候可以直接把数据下载到磁盘中
  • 支持后台下载和上传
  • 同一个session发送多次请求 只需要建立一次连接
  • 提供了全局的session并且可以统一处理 使用更加方便
  • 下载的时候是多线程异步处理 效率更高

NSURLSessionTask及其子类

  • NSURLSessionTask本身是一个抽象类,在使用的时候,通常是根据具体的需求使用它的几个子类
  • NSURLSessionDataTask可以用来发送常见的Get,Post请求,既可以用来上传也可以用来下载
  • NSURLSessionDownloadTask可以用来发送下载请求,专门用来下载数据
  • NSURLSessionUploadTask可以用来发送上传请求,专门用来上传数据

发送Get请求

过程

  1. 确定请求路径
  2. 创建请求对象 (可以忽略这一步)
  3. 创建会话对象 (NSURLSession)
  4. 根据会话对象创建请求任务 (NSURLSessionDataTask)
  5. 得到服务器响应之后解析数据
  6. 执行请求任务

示例

1.确定请求路径

    NSString *string = @"";
    NSURL *url = [NSURL URLWithString:string];

string就是自己的请求路径

2.创建请求对象

NSURLRequest *request = [NSURLRequest requestWithURL:url];

请求对象内部默认已经包含了请求头和请求方法

3.创建会话对象

   	NSURLSession *session = [NSURLSession sharedSession];

4.根据会话对象创建请求任务

    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        if (error == nil) {
	
        } else {
        
        }
    }];

第一个参数 : 请求路径
第二个参数 : completionHandler回调 请求成功或者失败
data : 响应体信息 (期望的数据)
response : 响应头信息 主要是对服务器端的描述
error : 错误信息 请求成功error == nil 失败则有值

5.解析数据

//说明(此处返回的数据是JSON格式的,因此使用NSJSONSerialization进行反序列化处理)
	if (error == nil) {
	NSLog(@"Get请求返回的响应信息:%@",[NSJSONSerialization 
                JSONObjectWithData:data options:kNilOptions error:nil]);
    } else {
    	NSLog(@"get error");
    };	

6.执行任务

[dataTask resume];

发送Post请求

过程

  1. 确定请求路径
  2. 创建可变的请求对象 (因为需要修改 这一步不可省略)
  3. 修改请求方法为post
  4. 创建会话对象
  5. 根据会话对象创建请求任务
  6. 得到服务器响应之后解析数据
  7. 执行任务

示例

1.确定请求路径

    NSURL *url_post = [NSURL URLWithString:@"1"];

2.创建可变的请求对象

NSMutableURLRequest *request_post = [NSMutableURLRequest requestWithURL:url_post];

3.修改请求方法为post

request_post.HTTPMethod = @"POST";

4.创建会话对象

NSURLSession *session_post = [NSURLSession sharedSession];

5.根据会话对象创建请求任务

NSURLSessionDataTask *task_post = [session_post dataTaskWithRequest:request_post completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

}];

6.得到服务器响应之后解析数据

NSLog(@"Post请求返回的响应信息:%@",[NSJSONSerialization JSONObjectWithData:_mData options:kNilOptions error:nil]);

7.执行任务

[task_post resume];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

waxuuuu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值