iOS开发-URLSession使用-URLSession网络请求

早期的时候(iOS5-7)我们使用的iOS-APP内置网络都是通过NSURLConnection完成的在iOS7之后,国内普片使用AFNetworking来进行网络操作(包括下载,请求,访问,数据传输等)也有的公司需要自己的写网络操作,在iOS9开始,NSURLConnection已经被废弃,官方推荐的是使用URLSession
以下是一个简单的网络请求:

NSURL *url=[NSURL URLWithString:@"https://www.百度.com"];
NSURLRequest *urlRequest=[NSURLRequest requestWithURL:url];
NSURLSession *urlSession=[NSURLSession sharedSession];
NSURLSessionDataTask *dataTask=[urlSession dataTaskWithRequest:urlRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    NSDictionary *content = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
    NSLog(@"%@",content);
}];
根据官方提供的功能,自己也能做出很多功能性操作:
NSURLSessionDataTask 用于接收文件的数据xml/json以及二进制文件的数据获取
NSURLSessionUploadTask 用于数据上传:
NSURLSessionUploadTask *uploadTask=[urlSession uploadTaskWithRequest:urlRequest fromData:[NSData new] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
     
}];

NSURLSessionDownloadTask 用于文件的下载

NSURLSessionDownloadTask *downloadTask=[urlSession downloadTaskWithRequest:urlRequest completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
     
}];
NSURLSession通过delegate的方式在异步处理任务,使用常用的两种NSURLSessionTaskDelegate和NSURLSessionDownloadDelegate

以下是代码:

NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *inProcessSession = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil];
NSString *url = @"https://www.baidu.com";
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
NSURLSessionTask *dataTask = [inProcessSession dataTaskWithRequest:request];

两个代理方式:
// NSURLSessionDownloadDelegate
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location{
    NSLog(@"下载完成");
}
// NSURLSessionTaskDelegate
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error{
     NSLog(@"执行结束");
}












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值