二、实际开发中的使用
  代码示例(演示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];