【iOS基础】NSURLConnection
一、大文件下载
1.方案:利用NSURLConnection和它的代理方法
1> 发送一个请求
- // 1.URL
- NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/resources/videos.zip"];
- // 2.请求
- NSURLRequest *request = [NSURLRequest requestWithURL:url];
- // 3.下载(创建完conn对象后,会自动发起一个异步请求)
- [NSURLConnection connectionWithRequest:request delegate:self];
2> 在代理方法中处理服务器返回的数据
- /**
- 在接收到服务器的响应时:
- 1.创建一个空的文件
- 2.用一个句柄对象关联这个空的文件,目的是:方便后面用句柄对象往文件后面写数据
- */
- - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
- {
- // 文件路径
- NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
- NSString *filepath = [caches stringByAppendingPathComponent:@"videos.zip"];
- // 创建一个空的文件 到 沙盒中
- NSFileManager *mgr = [NSFileManager defaultManager];
- [mgr createFileAtPath:filepath contents:nil attributes:nil];
- // 创建一个用来写数据的文件句柄
- self.writeHandle = [NSFileHandle fileHandleForWritingAtPath:filepath];
- }
- /**
- 在接收到服务器返回的文件数据时,利用句柄对象往文件的最后面追加数据
- */
- - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- {
- // 移动到文件的最后面
- [self.writeHandle seekToEndOfFile];
- // 将数据写入沙盒
- [self.writeHandle writeData:data];
- }
- /**
- 在所有数据接收完毕时,关闭句柄对象
- */
- - (void)connectionDidFinishLoading:(NSURLConnection *)connection
- {
- // 关闭文件
- [self.writeHandle closeFile];
- self.writeHandle = nil;
- }
2.注意点:千万不能用NSMutableData来拼接服务器返回的数据
二、NSURLConnection发送异步请求的方法
1.block形式 - 除开大文件下载以外的操作,都可以用这种形式
- [NSURLConnection sendAsynchronousRequest:<#(NSURLRequest *)#> queue:<#(NSOperationQueue *)#> completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
- }];
2.代理形式 - 一般用在大文件下载
- // 1.URL
- NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/login?username=123&pwd=123"];
- // 2.请求
- NSURLRequest *request = [NSURLRequest requestWithURL:url];
- // 3.下载(创建完conn对象后,会自动发起一个异步请求)
- [NSURLConnection connectionWithRequest:request delegate:self];
【iOS基础】NSURLConnection的更多相关文章
- IOS基础学习-2: UIButton
IOS基础学习-2: UIButton UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...
- iOS 基础日记-修饰符
今晚随便温习了一下iOS 基础关于修饰符这块的东西,下面简单的来描述一下,其中有的也是在网络学习到的: strong与weak是由ARC新引入的对象变量属性 ARC的解释:ARC引入了新的对象的生命周 ...
- iOS基础问答面试
<简书社区 — Timhbw>iOS基础问答面试题连载(一)-附答案:http://www.jianshu.com/p/1ebf7333808d <简书社区 — Timhbw> ...
- [iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表"练习)
A.概述 在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能 1.按钮点击后,显示为“已下载”,并且不 ...
- [置顶] IOS 基础入门教程
IOS 基础入门教程 教程列表: IOS 简介 IOS环境搭建 Objective C 基础知识 创建第一款iPhone应用程序 IOS操作(action)和输出口(Outlet) iOS - 委托( ...
- iOS 基础:Frames、Bounds 和 CGGeometry
https://segmentfault.com/a/1190000004695617 原文:<iOS Fundamentals: Frames, Bounds, and CGGeometry& ...
- iOS 基础入门--Bull' Eye 小游戏
说明 Bull's Eye小游戏是http://www.raywenderlich.com/store/ios-apprentice里非常酷的入门demo 跟着该教程一步步做下来便有了 ...
- iOS 基础函数解析 - Foundation Functions Reference
iOS 基础函数解析 - Foundation Functions Reference 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名- ...
- 动画 iOS基础
动画 iOS基础 1. basic animation 基础动画 一个基础动画 在一个开始值和一个结束值之间运动 messageLabel.alpha=0.0; [UIView ani ...
- iOS基础UI控件介绍-Swift版
iOS基础UI控件总结 iOS基础控件包括以下几类: 1.继承自NSObject:(暂列为控件) UIColor //颜色 UIImage //图像 2.继承自UIView: 只能相应手势UIGest ...
随机推荐
- Python基础----函数
1.作用域: 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 1==1: name = 'wupeiqi' print name 下面的结论对吗? 外层变量,可以被内 ...
- OD: Vulnerability Detection
终于看完第二篇漏洞利用原理高级篇,内容虽然看懂了,但深入理解不够,这部分内容以后还要不断强化. 第三篇是漏洞挖掘技术,篇首的话中,提到程序的不可计算性(图灵机的停机问题).希伯尔数学纲领的失败,结尾说 ...
- SQL从入门到基础 - 01 数据库开发及ADO.Net
一.数据库概述 1. 用自定义文件格式保存数据的劣势:并发性差,查找数据的速度差. 2. DBMS(DataBase Management System数据库管理系统)和数据库.平时谈到“数据库”的含 ...
- msi软件包无法安装
安装某些msi软件包,提示“This advertised application will not be installed because it might be unsafe. Contact ...
- python的exec、eval详解
exec exec语句用来执行储存在字符串或文件中的Python语句.例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句.下面是一个简单的例子. exec ' ...
- 详解CSS选择器、优先级与匹配原理
原文链接:http://polaris1119.javaeye.com/blog/764428 作为一个Web开发者,掌握必要的前台技术也是很重要的,特别是在遇到一些实际问题的时候.这里给大家列举一个 ...
- 一行代码实现C#的四舍五入
C# 使用的是”四舍六入五成双”的银行家算法: 1 2 Math.Round(2.5); // 2 Math.Round(1.5); // 2 由此可见,1.5的Round符合我们的四舍五入,于是Ha ...
- 2016最新一元云购完整源码 云购CMS系统 带安卓和ios手机客户端 源码免费分享
原文转自:http://www.zccode.com/thread-724-1-1.html 该资源说明: 看起来不错的一套一元云购CMS源码,源码包里面带了安卓和ios手机客户端,手机客户端需要自己 ...
- android 安卓 微信布局 [1]
微信布局 直接上代码吧 ---------------------------------------- 头部 -------------------------------------------- ...
- 网络请求时 返回 App Transport Security has blocked a cleartext HTTP
如上图,是因为 Xcode7 没有对 plist 进行 http 请求的配置 所致 这时需要 加上上面的plist的红框中 的内容 并且 设置 为 yes 如下图