NSURLSession使用与AFNetWorking使用

介绍iOS中的两种网络编程。

NSURLSession

iOS原生网络编程:支持后台下载上传、提供全局session、下载时是多线程异步处理效率更高。
使用上非常简单、创建一个请求Task然后执行。NSURLSessionTask有一些子类:NSURLSessionDataTask(发送常见的Get,Post请求)、NSURLSessionDownloadTask(发送下载请求)、NSURLSessionUploadTask(发送上传请求)

1. NSURLSession发送Get请求

  • 过程:确认请求路径NSURL对象、创建请求对象NSURLRequest对象、创建会话对象NSURLSession、创建请求任务并执行、得到响应解析数据
  • 代码示例:
//创建请求路径
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://39.98.152.99:80/login?username=%@&password=%@",username,password]];
//创建请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//获得会话对象
NSURLSession *session = [NSURLSession sharedSession];
//创建Task并执行,在block里接收返回数据
NSURLSessionTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
   
        if(error == nil) {
   
        	//接收字符串数据
            NSString *responseInfo = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            //接收字典类型
            NSDictionary *responseInfo = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
        }else{
   
            NSLog(@"error:%@",error);
        }
}];
[dataTask resume];

2. NSURLSession发送Post请求

  • 过程:确定请求路径(NSURL)、创建可变请求对象(NSMutableURLRequest)、设置请求方法与请求体、创建会话对象、创建请求任务并执行、响应后解析数据。
  • 代码示例
//确定请求路径
NSURL *url = [NSURL URLWithString:@"http://39.98.152.99:80/login"];
//创建可变请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//设置请求方法与请求体
request.HTTPMethod = @"POST";
request.HTTPBody = [@"username=jack&password=123" dataUsingEncoding:NSUTF8StringEncoding];
//创建会话对象
NSURLSession *session = [NSURLSession sharedSession];
//创建Task并执行
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
   

}];

3. 使用代理完成请求
监听网络请求的过程,需要遵守协议并实现代理方法。

  • 确定请求路径
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://39.98.152.99:80/login?username=%@&password=%@",username,password]];
  • 创建请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:url];
  • 获得会话对象并设置代理
    第三个参数决定代理方法在哪个线程中调用,[[NSOperationQueue alloc] init]则在子线程中调用,示例为主线程。
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值