网络篇-NSURLSession介绍
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介绍相关推荐
- android 网络篇简单介绍
1 简介 本文简单介绍android 开发中常用的webview .url. volley. json解析等网络工具.由于篇幅问题,这里只做简单介绍并不做详解. 2 WebView的用法 2.1 简单 ...
- 02.iOS开发网络篇—HTTP协议
iOS开发网络篇-HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...
- 【转】一文掌握 Linux 性能分析之网络篇(续)
[转]一文掌握 Linux 性能分析之网络篇(续) 在上篇网络篇中,我们已经介绍了几个 Linux 网络方向的性能分析工具,本文再补充几个.总结下来,余下的工具包括但不限于以下几个: sar:统计信息 ...
- iOS开发网络篇—多线程断点下载
iOS开发网络篇-多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始, ...
- iOS开发网络篇—使用ASI框架进行文件下载
iOS开发网络篇-使用ASI框架进行文件下载 说明:本文介绍iOS网络编程中经常用到的框架ASI,如何使用该框架进行文件的下载. 一.简单介绍 代码示例: 1 #import "YYView ...
- 谷歌大脑科学家亲解 LSTM:一个关于“遗忘”与“记忆”的故事 本文作者:奕欣 2017-01-14 09:46 导语:AI科技评论保证这是相对通俗易懂的一篇入门介绍了,看不懂的话欢迎关注「AI 科技
谷歌大脑科学家亲解 LSTM:一个关于"遗忘"与"记忆"的故事 本文作者:奕欣 2017-01-14 09:46 导语:AI科技评论保证这是相对通俗易懂的一篇入 ...
- 主机overlay和网络overlay_Docker网络篇之overlay模式
overlay网络简介 前面介绍过的host网络模式和bridge网络模式都是在单体的docker服务器上的容器间的网络通信.对于多个docker服务器上的多个容器间网络通信就需要使用到overlay ...
- 一文掌握 Linux 性能分析之网络篇(续)
在上篇网络篇中,我们已经介绍了几个 Linux 网络方向的性能分析工具,本文再补充几个.总结下来,余下的工具包括但不限于以下几个: sar:统计信息历史 traceroute:测试网络路由 dtrac ...
- 网络学习(一)网络版块主题介绍
网络版块主题介绍 大家好,我叫陈伟,男,现就读于四川农业大学都江堰校区商学院计算机科学与技术教育2009级2班,大三学生.×××上出生时间为1992年08月19日,QQ:908586843, ...
最新文章
- 第17章 使用iSCSI服务部署网络存储
- 值得收藏!7个值得下载的软件,让人大开眼界!
- 2018年4月份,阿里最新的java程序员面试题目
- fritz_如何使用Fritz.ai将机器学习应用于Android
- js之call,apply和bind的模拟实现
- Eclipse安装hibernate插件的问题
- C语言 编写程序,求s不超过2000时n的最大值,s=1+2+3+……+n
- javascript 温故而知新 getBoundingClientRect
- springboot 优雅的参数校验_SpringBoot 2.x 开发案例之优雅的校验参数
- 计算机模拟量与数字量的转换,在S7-1200 CPU中,如何实现模拟量数值与工程量数值之间的转换?...
- jquery 循环_jquery实现无限循环滚动
- WebSocket转载
- “阿一web标准学堂”第1课:web标准概述(附视频、课件、代码下载)
- mysql sqlserver 拷贝_SQLyog工具进行SQLSERVER表结构或数据拷贝到MySQL数据库
- 《空间谱估计理论与算法》学习笔记005-信号源数估计
- 【SQL】小CASE
- 《Linux运维实战:搭建自己的Confluence知识管理系统》
- 短按SOS键实现开始与停止白光LED灯闪烁状态
- 【anaconda】彻底解决windows下anaconda3占用C盘问题(改了envs、pkgs安装路径依旧占用C盘)
- 用Python的Seaborn库绘制17个超好看图表
热门文章
- vector java 复制_Java性能优化必知的40个细节(珍藏版):Jvm调优+MySQL+Tomcat
- 数据库的四大事务特性
- Windows10系统下PaddleOCR文本检测和文本识别安装
- Codeforces Round #162 (Div. 2): D. Good Sequences(DP)
- 类别不平衡问题之评估指标
- swagger入门和实践(含docker部署swagger)
- HWDB数据集gnt格式转为png格式
- 将hls生成的IP添加到vivado2018
- iOS8 获取通知设置状态
- 如何使用JavaScript阻止关闭窗口