NSURLSession:

作用:和NSURLConnection一样1、负责发送请求,建立客户端和服务器的连接发送数据给服务器2、并收集来自服务器的响应数据
步骤:1、创建NSURLSession对象2、利用NSURLSession创建任务(task)3、执行任务
任务的类型:1、NSURLSessionDataTask         //普通的请求数据2、NSURLSessionDownloadTask     //下载数据3、NSURLSessionUploadTask       //上传数据
  • NSURLSessionDataTask(普通的请求数据)

    • GET 请求
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{//1、创建NSURLSession对象NSURLSession *session = [NSURLSession sharedSession];//2、利用NSURLSession创建任务(task)NSURL *url = [NSURL URLWithString:@"http://192.168.1.0:8080/login?username=LitterL&pwd=123"];NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);}];//3、执行任务[task resume];
    }
    • POST 请求
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{//1、创建NSURLSession对象NSURLSession *session = [NSURLSession sharedSession];//2、利用NSURLSession创建任务(task)NSURL *url = [NSURL URLWithString:@"http://192.168.1.0:8080/login"];//创建请求对象里面包含请求体NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];request.HTTPMethod = @"POST";request.HTTPBody = [@"username=LitterL&pwd=123" dataUsingEncoding:NSUTF8StringEncoding];NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);}];//3、执行任务[task resume];
    }
    • 补充

      这里的话,结果我就不截图显示了,结果都是为一样的JSON数据

  • NSURLSessionDownloadTask:(下载图片)
    • 代码
    -(void)download{//创建URLNSURL *url = [NSURL URLWithString:@"http://upload.jianshu.io/users/upload_avatars/1232706/aa229f6d7f4d.png?imageMogr/thumbnail/90x90/quality/100"];//    1、创建NSURLSession对象NSURLSession *seesion = [NSURLSession sharedSession];/*    2、利用NSURLSession创建任务(task)第一个参数:需要下载的文件路径第二个参数:location:下载好的临时文件路径response:响应头error:请求是否错误*/NSURLSessionDownloadTask *task = [seesion downloadTaskWithURL:url completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {//1、生成的Cace地址NSString *cacepath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingString:[NSString stringWithFormat:@"/%@",response.suggestedFilename]];//2、移动图片的存储地址NSFileManager *manager = [NSFileManager defaultManager];[manager moveItemAtURL:location toURL:[NSURL fileURLWithPath:cacepath] error:nil];}];//    3、执行任务[task resume];
    }
    • 补充

      这里是从网络上面获取图片,方法本身是帮你写到了沙盒中的tmp文件夹中去,因为tmp是临时文件夹,处于不安全的,所以这里就把写入的图片移动到沙盒的Caches中去了,但是它的缺点为不能获取下载的进度,不能让界面实时更新,在后面的文章中,我会以Demo的形式展现出来。

  • NSURLSessionUploadTask

    这里的话上传和进度下载会在后面抽取两篇文章出来,这里就不简约展示了

                   本章到此结束欢迎各位码友随意转载并指正

转载于:https://www.cnblogs.com/ljy-666/p/5142835.html

网络篇-NSURLSession介绍相关推荐

  1. android 网络篇简单介绍

    1 简介 本文简单介绍android 开发中常用的webview .url. volley. json解析等网络工具.由于篇幅问题,这里只做简单介绍并不做详解. 2 WebView的用法 2.1 简单 ...

  2. 02.iOS开发网络篇—HTTP协议

    iOS开发网络篇-HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...

  3. 【转】一文掌握 Linux 性能分析之网络篇(续)

    [转]一文掌握 Linux 性能分析之网络篇(续) 在上篇网络篇中,我们已经介绍了几个 Linux 网络方向的性能分析工具,本文再补充几个.总结下来,余下的工具包括但不限于以下几个: sar:统计信息 ...

  4. iOS开发网络篇—多线程断点下载

    iOS开发网络篇-多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始, ...

  5. iOS开发网络篇—使用ASI框架进行文件下载

    iOS开发网络篇-使用ASI框架进行文件下载 说明:本文介绍iOS网络编程中经常用到的框架ASI,如何使用该框架进行文件的下载. 一.简单介绍 代码示例: 1 #import "YYView ...

  6. 谷歌大脑科学家亲解 LSTM:一个关于“遗忘”与“记忆”的故事 本文作者:奕欣 2017-01-14 09:46 导语:AI科技评论保证这是相对通俗易懂的一篇入门介绍了,看不懂的话欢迎关注「AI 科技

    谷歌大脑科学家亲解 LSTM:一个关于"遗忘"与"记忆"的故事 本文作者:奕欣 2017-01-14 09:46 导语:AI科技评论保证这是相对通俗易懂的一篇入 ...

  7. 主机overlay和网络overlay_Docker网络篇之overlay模式

    overlay网络简介 前面介绍过的host网络模式和bridge网络模式都是在单体的docker服务器上的容器间的网络通信.对于多个docker服务器上的多个容器间网络通信就需要使用到overlay ...

  8. 一文掌握 Linux 性能分析之网络篇(续)

    在上篇网络篇中,我们已经介绍了几个 Linux 网络方向的性能分析工具,本文再补充几个.总结下来,余下的工具包括但不限于以下几个: sar:统计信息历史 traceroute:测试网络路由 dtrac ...

  9. 网络学习(一)网络版块主题介绍

    网络版块主题介绍      大家好,我叫陈伟,男,现就读于四川农业大学都江堰校区商学院计算机科学与技术教育2009级2班,大三学生.×××上出生时间为1992年08月19日,QQ:908586843, ...

最新文章

  1. 第17章 使用iSCSI服务部署网络存储
  2. 值得收藏!7个值得下载的软件,让人大开眼界!
  3. 2018年4月份,阿里最新的java程序员面试题目
  4. fritz_如何使用Fritz.ai将机器学习应用于Android
  5. js之call,apply和bind的模拟实现
  6. Eclipse安装hibernate插件的问题
  7. C语言 编写程序,求s不超过2000时n的最大值,s=1+2+3+……+n
  8. javascript 温故而知新 getBoundingClientRect
  9. springboot 优雅的参数校验_SpringBoot 2.x 开发案例之优雅的校验参数
  10. 计算机模拟量与数字量的转换,在S7-1200 CPU中,如何实现模拟量数值与工程量数值之间的转换?...
  11. jquery 循环_jquery实现无限循环滚动
  12. WebSocket转载
  13. “阿一web标准学堂”第1课:web标准概述(附视频、课件、代码下载)
  14. mysql sqlserver 拷贝_SQLyog工具进行SQLSERVER表结构或数据拷贝到MySQL数据库
  15. 《空间谱估计理论与算法》学习笔记005-信号源数估计
  16. 【SQL】小CASE
  17. 《Linux运维实战:搭建自己的Confluence知识管理系统》
  18. 短按SOS键实现开始与停止白光LED灯闪烁状态
  19. 【anaconda】彻底解决windows下anaconda3占用C盘问题(改了envs、pkgs安装路径依旧占用C盘)
  20. 用Python的Seaborn库绘制17个超好看图表

热门文章

  1. vector java 复制_Java性能优化必知的40个细节(珍藏版):Jvm调优+MySQL+Tomcat
  2. 数据库的四大事务特性
  3. Windows10系统下PaddleOCR文本检测和文本识别安装
  4. Codeforces Round #162 (Div. 2): D. Good Sequences(DP)
  5. 类别不平衡问题之评估指标
  6. swagger入门和实践(含docker部署swagger)
  7. HWDB数据集gnt格式转为png格式
  8. 将hls生成的IP添加到vivado2018
  9. iOS8 获取通知设置状态
  10. 如何使用JavaScript阻止关闭窗口