iOS之NSURLConnection详解(2)
1 一、NSURLConnection 2 1.发送请求 3 1> 发送一个同步请求 4 + (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error; 5 6 2> 发送一个异步请求(block) 7 + (void)sendAsynchronousRequest:(NSURLRequest*) request 8 queue:(NSOperationQueue*) queue 9 completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler; 10 11 3> 发送一个异步请求(代理方法) 12 [NSURLConnection connectionWithRequest:request delegate:self]; 13 [[NSURLConnection alloc] initWithRequest:request delegate:self]; 14 [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES]; 15 16 NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO]; 17 [conn start]; 18 19 2.文件下载(大文件下载) 20 1> 实现方案 : 边下载边写入(写到沙盒的某个文件中) 21 2> 具体实现步骤 22 a. 在接收到服务器的响应时 23 // 创建一个空文件 - NSFileManager 24 [mgr createFileAtPath:self.destPath contents:nil attributes:nil]; 25 26 // 创建一个跟空文件相关联的句柄对象 - NSFileHandle 27 [NSFileHandle fileHandleForWritingAtPath:self.destPath]; 28 29 b. 在接收到服务器的数据时 30 // 利用句柄对象将服务器返回的数据写到文件的末尾 31 // 移动到文件的尾部 32 [self.writeHandle seekToEndOfFile]; 33 // 从当前移动的位置(文件尾部)开始写入数据 34 [self.writeHandle writeData:data]; 35 36 c. 在接收完服务器返回的数据时 37 // 关闭句柄 38 [self.writeHandle closeFile]; 39 self.writeHandle = nil; 40 41 3.断点下载 42 1> 关键技术点 43 * 设置请求头Range, 告诉服务器下载哪一段数据 44 45 4.文件上传 46 1> 明确 47 * 只能用POST请求 48 * 请求参数都在请求体(文件参数\非文件类型的普通参数) 49 50 2> 实现步骤 51 a. 拼接请求体(文件参数\非文件类型的普通参数) 52 * 文件参数 53 // 参数的开始标记(分割线) 54 --nihao\r\n 55 // 参数描述(参数名...) 56 Content-Disposition: form-data; name="参数名"; filename="文件名"\r\n 57 // 文件类型 58 Content-Type: 文件的类型MIMEType\r\n 59 // 文件的二进制数据(参数值) 60 \r\n 61 文件的二进制数据 62 \r\n 63 64 * 非文件参数(普通参数) 65 // 参数的开始标记(分割线) 66 --nihao\r\n 67 // 参数描述(参数名...) 68 Content-Disposition: form-data; name="参数名"\r\n 69 // 参数值 70 \r\n 71 参数值 72 \r\n 73 74 * 所有参数结束的标记 75 --nihao--\r\n 76 77 b. 设置请求头 78 * 请求体的长度 79 Content-Length : 请求体的长度(字节长度) 80 81 * 请求数据的类型 82 Content-Type : 83 // 普通POST请求: application/x-www-form-urlencoded 84 // 上传文件的POST请求 : multipart/form-data; boundary=--nihao
转载于:https://www.cnblogs.com/changxs/p/4048434.html
iOS之NSURLConnection详解(2)相关推荐
- IOS 多线程04-GCD详解 底层并发 API
IOS 多线程04-GCD详解 底层并发 API 注:本人是翻译过来,并且加上本人的一点见解. 前言 想要揭示出表面之下深层次的一些可利用的方面.这些底层的 API 提供了大量的灵活性,随之而来的是大 ...
- iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)
前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...
- iOS核心动画详解swift版----基础动画
2019独角兽企业重金招聘Python工程师标准>>> iOS核心动画详解swift版---基础动画 创建工程,添加2个ViewController,通过rootViewContro ...
- iOS教程:详解iOS多图下载的缓存机制
ios教程,ios的干货一直来不及给大家分享,小编也是一直在忙啊!今天给大家献上ios:详解iOS多图下载的缓存机制 1. 需求点是什么? 这里所说的多图下载,就是要在tableview的每一个cel ...
- iOS TableView 使用详解
IOS TableView 详解 一.建立 UITableView DataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, ...
- iOS 内购详解-代码篇
内购项目-代码篇 一.分步骤说明 1.获取商品列表 2.苹果服务器返回的可购买商品 3.下单购买商品 4.购买队列状态变化,判断购买状态是否成功 5.交易验证 6.拿到的收据信息是,此App所有购买的 ...
- ios NSFileManager 用法详解
2019独角兽企业重金招聘Python工程师标准>>> iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileMana ...
- iOS runtime 底层详解、内部原理、场景应用
前言学:位域和共用体 一:isa指针--runtime之前的学习 1.1:苹果应用的按位或.按位与 二:类对象信息 2.1:类对象信息:rw_t 2.2:类对象信息:方法缓存(很关键) 2.2:类对象 ...
- iOS in-app purchase详解
in-app purchase教程: http://www.appcoda.com/in-app-purchase-tutorial/ 3.后台服务器验证收据的正确性 IOS 内支付有两种模式: 1) ...
最新文章
- 使用.NET REACTOR制作软件许可证
- oracle 存储过程的基本语法
- http路径转file会变成反斜杠_PHP session反序列化漏洞
- 模块化数据中心还需精工细作
- 笨方法学python--变量和命名
- javascript 原生得到document.Element的方法
- Ubuntu apt upgrade后黑屏问题
- HTML+CSS+JS实现 ❤️three 3D铅笔绘图工具特效❤️
- linux中tar命令怎么用,linux tar命令使用详解
- latex入门(一)——latex网站overleaf
- Javaweb生成族谱树形图
- 360浏览器打开html不能正常显示图片,“网页图片显示异常,网页图片、验证码显示不正常,经常显示不全或根本不显示”的解决方案...
- 简单枚举 / 枚举排列
- 微信爬取过程中参数分析
- 计算机怎么换桌面皮肤,如何更换电脑腾讯视频上的皮肤样式
- 软件设计领域没有银弹,但代码大师MaxKanat-Alexander的建议绝对能给你带来启发...
- android 退出 动画效果,Activity进入和退出动画的实现
- Vue 中实现Video视频不可快进
- 《培根随笔》读书笔记(二)
- Lightroom无法在卷计算机上,lightroom无法正常启动怎么办?解决lightroom无法启动方法...
热门文章
- 客户端序列码生成_Django REST Framework教程(2): 序列化器介绍及开发基于函数视图的API...
- 一年级学python_你是如何自学 Python 的?
- win7系统mysql连接不上数据库吗_Win7系统使用数据库时mysql频繁掉线无法连接的两种解决方法...
- java socket长连接怎么维持_socket长连接的维持
- SSM整合——实现图书的查询功能
- Git基础操作及常见命令——详解
- 最新小白详细描述在centos7.5上安装python3并使用Nginx+virtualenv+supervisor来部署tornado项目(整理集合结合实际)系列2
- MongoDB两阶段提交实现事务
- sstream和strstream以及fstream
- 你真的会玩SQL吗?玩爆你的数据报表之存储过程编写(下)