iOS开发网络篇?使用ASI框架进行文件下载
作者:网络转载 发布时间:[ 2015/7/3 13:59:00 ] 推荐标签:移动开发 网络
二、实际开发中的使用
代码示例(演示2):
1 #import "YYViewController.h"
2 #import "ASIHTTPRequest.h"
3
4 @interface YYViewController ()
5
6
7 @end
8
9 @implementation YYViewController
10
11 - (void)viewDidLoad
12 {
13 [super viewDidLoad];
14 }
15
16 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
17 {
18 //下载服务器上的文件
19 [self download1];
20 }
21
22 #pragma mark-下载文件
23 //演示1
24 -(void)download
25 { //1.创建请求对象
26 NSURL *url=[NSURL URLWithString:@"http://127.0.0.1:8080/MJServer/resources/video.zip"];
27 ASIHTTPRequest *request=[ASIHTTPRequest requestWithURL:url];
28
29 //2.添加请求参数(请求体中的参数)
30 [request setDataReceivedBlock:^(NSData *data) {
31 NSLog(@"%d",data.length);
32 }];
33
34 //3.异步发送网络请求
35 [request startAsynchronous];
36 }
37
38 //演示2
39 -(void)download1
40 {
41 //1.创建请求对象
42 NSURL *url=[NSURL URLWithString:@"http://127.0.0.1:8080/MJServer/resources/video.zip"];
43 ASIHTTPRequest *request=[ASIHTTPRequest requestWithURL:url];
44
45 //2.设置下载文件保存的路径
46 NSString *cachepath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
47 NSString *filename=[cachepath stringByAppendingPathComponent:@"video.zip"];
48 request.downloadDestinationPath=filename;
49 NSLog(@"%@",filename);
50
51 //3.发送网络请求(异步)
52 [request startAsynchronous];
53
54 //4.当下载完成后通知
55 [request setCompletionBlock:^{
56 NSLog(@"下载成功");
57 }];
58 }
59
60 @end
下载成功:
代码说明:
在实际的开发中如果要使用asi框架来下载服务器上的文件,只需要执行下面简单的几个步骤即可(参照上面的代码)。
(1)创建请求对象;
(2)设置下载文件保存的路径;
(3)发送下载文件的网络请求(异步)。
按照上面的几个步骤执行,程序会自动开启异步线程,一点一点的把数据写入到指定的文件路径,而且不论是下载多大的文件都不会占用大量的内存空间。
asi框架是基于底层的cfnoteworking的,性能很好。当然也可以设置block,或者是监听下载的进度。
下面介绍使用asi框架下载文件,如何监听下载的进度。
设置下载代理,注意不是控制器代理。
代码示例:
1 #import "YYViewController.h"
2 #import "ASIHTTPRequest.h"
3
4 @interface YYViewController ()<ASIProgressDelegate>
5 @property (weak, nonatomic) IBOutlet UIProgressView *progress;
6 @end
7
8 @implementation YYViewController
9
10 - (void)viewDidLoad
11 {
12 [super viewDidLoad];
13 }
14
15 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
16 {
17 //下载服务器上的文件
18 [self download];
19 }
20
21 #pragma mark-下载文件
22 -(void)download
23 {
24 //1.创建请求对象
25 NSURL *url=[NSURL URLWithString:@"http://127.0.0.1:8080/MJServer/resources/video.zip"];
26 ASIHTTPRequest *request=[ASIHTTPRequest requestWithURL:url];
27
28 //2.设置下载文件保存的路径
29 NSString *cachepath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
30 NSString *filename=[cachepath stringByAppendingPathComponent:@"video.zip"];
31 request.downloadDestinationPath=filename;
32 NSLog(@"%@",filename);
33
34 //3.设置下载进度的代理
35 request.downloadProgressDelegate=self.progress;
36
37 //4.发送网络请求(异步)
38 [request startAsynchronous];
39
40 //5.下载完毕后通知
41 [request setCompletionBlock:^{
42 NSLog(@"文件已经下载完毕");
43 }];
44 }
45
46 #pragma mark-监听下载进度的代理方法
asi的文件下载还有一个属性可以设置是否支持断点下载。
设置支持断点下载的代码如下:
request.allowResumeForFileDownloads=YES;
这样的话,比如一个文件已经下载了百分之30到程序的沙盒中,这个时候取消了下载。当下一次点击下载文件的时候,会接着下载剩余的百分之70并一点一点的写入到沙盒中。
提示:取消下载的代码为:
[request clearDelegatesAndCancel];
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
了解ios自动化测试要知道哪些知识?IOS配置、远程设备管理和TestAgent的启动方式移动测试工具MR是如何进行IOS设备录制以及相关脚本命令编辑操作的?MobileRunner iOS部署文档iOS单元测试iOS遭攻击频率低于安卓 但后果更严重iOS的JSON解析及用例设计iOS UnitTest单元测试(iOS)一个让我找了6小时的BugAppium iOS 10 跑起来浅谈iOS单元测试iOS UI自动化测试初探iOS APP打包分发给远程的手机测试复杂业务场景下如何进行iOS端自动化测试微信关闭iOS版公众号打赏功能,只因苹果想分成?苹果企业账号遭滥用:iOS漏洞“留出”赌博应用通道
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南