使用NSURLSession
来源:互联网 发布:老鼠 知乎 编辑:程序博客网 时间:2024/06/06 02:39
公司准备安排一场面向内部员工的移动开发培训,包括Android和iOS,我就担当起了写培训教材和制作PPT的重任,于是乎,在我写完App新功能的接口,在iOS端完成了测试,全程陪跑安卓测试成功之后,就全身心的投入了PPT的制作中。
在写PPT的过程中,搜集资料,发现NSURLConnection在iOS9的时候被弃用,而作为一个接触iOS比较早的我(哈哈哈,比较早而已),是习惯了用NSURLConnection的,虽然本质上用AFNetworking比较多。但是既然是培训,还是要给那些想学iOS的同事解释一下NSURLConnection和NSURLSession,于是乎,在网上找了一下相关资料进行学习和整理,将它们毫无保留的分享给同事们,也要分享给大家。
努力的人运气都不会太差。
言归正传,跟我一起学NSURLSession
使用NSURLSession,总共分两步:
- 第一步 通过NSURLSession的实例创建task
- 第二部 执行task
既然两步里面都出现了task,就先说说它吧.
NSURLSessionTask可以简单理解为任务:如数据请求任务,下载任务,上传任务and so on.我们使用的是他的子类们:
- NSURLSessionTask(抽象类)
- NSURLSessionDataTask
- NSURLSessionUploadTask
- NSURLSessionDownloadTask
- NSURLSessionDataTask
NSURLSessionDataTask
字面上看是和数据相关的任务,但其实dataTask完全可以胜任downloadTask和uploadTask的工作.这可能也是我们使用最多的task种类。
简单GET请求
如果请求的数据比较简单,也不需要对返回的数据做一些复杂的操作,那么我们可以使用带block。
#pragma mark - NSURLSession GET Block-- (void)getDataByMethodGetUseBlock{ //单例获得NSURLSession对象 NSURLSession *session = [NSURLSession sharedSession]; //创建一个url对象 NSURL *url = [[NSURL alloc]initWithString:GET_URL]; //通过URL初始化task,在block内部可以直接对返回的数据进行处理 NSURLSessionTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { if (data != nil) { //解析数据 NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; NSLog(@"%@",dic); } }]; //启动任务 [task resume]; }
Tips:
所有类型的task都要调用resume方法才会开始进行请求。
简单POST请求
POST和GET的区别就在于request,所以使用session的POST请求和GET过程是一样的,区别就在于对request的处理。
#pragma mark - NSURLSession POST Block-- (void)getDataByMethodPostUseBlock{ NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:POST_URL]]; request.HTTPMethod = @"POST"; request.HTTPBody = [POST_BODY dataUsingEncoding:NSUTF8StringEncoding]; //单例获得NSURLSession对象 NSURLSession *session = [NSURLSession sharedSession]; //通过URL初始化task,在block内部可以直接对返回的数据进行处理 NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { if (data != nil) { //解析数据 NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; NSLog(@"%@",dic); } }]; //启动任务 [task resume]; }
未完待续···
- NSURLSession使用
- 使用NSURLSession
- 使用NSURLSession
- 使用NSURLSession
- 使用NSURLSession
- 使用NSURLSession
- 使用NSURLSession
- NSURLSession的简单使用
- 使用NSURLSession进行上传下载
- NSURLSession的简单使用
- iOS NSURLSession使用
- iOS NSURLSession的使用
- 为什么要使用NSURLSession
- NSURLSession基本使用
- NSURLSession的基本使用
- NSURLSESSION使用实战教程
- NSURLSESSION的使用
- NSURLSession的使用
- $(...).niceScroll is not a function
- Java重要类之LinkList类详解
- Error:Error: This fragment should provide a default constructor (a public constructor打包apk错误
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 接口回调本质就这么简单
- 使用NSURLSession
- sublime text 3破解--汉化
- Mac下Android Studio上传SVN
- Jquery each方法跳出循环,并获取返回值(实例讲解)
- 开发微信小程序入门前
- Java是如何读取和写入浏览器Cookies的
- 关于SemEval2016 Task4 Sentiment Analysis的分析
- Freetype 裁剪和使用
- shell 封装mysql查询