ASI使用介绍(文件下载)

前两节,我介绍了ASI的“同步与异步”及“文件上传”的知识,如有什么疑问的,请点击这里。这一节通过一个简单的例子,介绍一下通过ASI实现文件的下载。

界面很简单,"Start": 开始下载; “Stop”: 暂停下载; 支持断点续传。

1.要定义一个request成员属性,对ASI的request对象进行强引用。

@property(nonatomic,strong)  ASIHTTPRequest *request;

2.实现代理ASIProgressDelegate,用来显示进度条的进度。

3. 在dealloc方法中,要对ASI的request对象进行销毁工作。

// 当发出一个请求,也许5秒之后才有响应,没有等到响应回来的时候你就切换了控制器,则产生了野指针!!! 所以一定要在控制器销毁的时候调用下面代码!!
- (void)dealloc {
    [self.request clearDelegatesAndCancel];
}

4. start 与 stop方法如下。

- (IBAction)start {
    [self downloadFile];
}

- (IBAction)stop {
    [self.request clearDelegatesAndCancel];
}

5. 实现下载功能的主要方法。

- (void)downloadFile {
    // 1. 创建请求对象(我使用的测试链接,是下载的搜狗输入法)
    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/link?url=bvCTezSVwkMRVbM2cQ5ntfsumx3AhZOEVzpe6EfbneMN8GFmkhC0BfXkoq1Sfus9v-wW19U37IvbEkdO5dWvRYeakTk0uPtTBzz6Xa5gF_y"];
    self.request = [ASIHTTPRequest requestWithURL:url];

    // 2. 文件保存路径
    NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

    // 下载完毕后正式的文件
    NSString *filePath = [caches stringByAppendingPathComponent:@"sougou.zip"];
    self.request.downloadDestinationPath = filePath;

    // 临时下载文件,用来支持断点续传。续传成功会自动生成sougou.zip
    NSString *tempFilePath = [caches stringByAppendingPathComponent:@"sougou.temp.zip"];
    self.request.temporaryFileDownloadPath = tempFilePath;

    // 3. 设置下载进度代理
    // 用self.progressView作为代理,因为UIProgressView本身就有setProgress方法,相当于也实现了setProgress的代理方法。就能直接看到progressView的显示进度了,一举两得.
    self.request.downloadProgressDelegate = self.progressView;

    //self.request.downloadProgressDelegate = self;

    // 4. 请求超时控制
    self.request.timeOutSeconds = 10;

    // 5. 支持断点续传
    self.request.allowResumeForFileDownloads = YES;

    [self.request startAsynchronous];
}

对代码中,进度条控制的代码进行解释:它其实利用了代理的setProgress方法与进度条本身的progress属性同名的特点。

self.request.downloadProgressDelegate = self.progressView;

上面一句代码其实等价于

self.request.downloadProgressDelegate = self;
- (void)setProgress:(float)newProgress {
   // NSLog(@"Thread:%@",[NSThread currentThread]);
    self.progressView.progress = newProgress;
}

到此为止,ASI部分的使用介绍就已经完毕了。以下两节,我将介绍AFN的使用。

时间: 2024-08-28 21:38:26

ASI使用介绍(文件下载)的相关文章

iOS开发网络篇—使用ASI框架进行文件下载

原文  http://www.cnblogs.com/wendingding/p/3961681.html iOS开发网络篇—使用ASI框架进行文件下载 说明 :本文介绍iOS网络编程中经常用到的框架ASI,如何使用该框架进行文件的下载. 一.简单介绍 代码示例: 1 #import "YYViewController.h" 2 #import "ASIHTTPRequest.h" 3 4 @interface YYViewController () 5 6 7 @

ASI使用介绍(同步与异步)

ASI 即  ASIHTTPRequest. 官方网站: http://allseeing-i.com/ASIHTTPRequest/ .可以从上面下载到最新源码,以及获取到相关的资料. 使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中.ASIHTTPRequest适用于基本的

ASI使用介绍(Post与文件上传)

上一节中,介绍了ASI的基本使用,而且默认的使用方式都是Get请求方式.如有疑问,请点击这里.Get请求是从url中传递参数的,并且一般是要向服务器"索要"自己想要的数据.而Post请求,一般都是表单数据的提交,请求数据的信息在请求报文中,后台服务器接受到请求信息后,会进行相应的处理,比如:登陆操作.这一节,我就ASI中使用Post请求做一些简单的介绍. 在ASI中,进行Post请求使用的类是 ASIFormDataRequest. Example 1:网页版163邮箱登陆. - (v

iOS开发网络篇—简单介绍ASI框架的使用

iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大. ASI的实现基于底层的CFNetwork框架,因此运行效率很高.可惜作者早已停止更新,有一些潜在的BUG无人去解决 ASI的github地址 https://github.com/pokeb/asi-http-request ASI的使用参考 http://www.cnblogs.com/dot

[iOS 多线程 & 网络 - 2.9] - ASI框架

A.ASI基本知识 1.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大. ASI的实现基于底层的CFNetwork框架,因此运行效率很高. ASI的github地址 https://github.com/pokeb/asi-http-request ASI的使用参考http://www.cnblogs.com/dotey/archive/2011/05/10/2041966.html http://www.oschina.net/question

iOS网络开发(8)文件下载的实现

本篇文章介绍文件下载,包括以下内容: 原生态的分段下载的基本原理 NSURLSession的下载任务 使用AFNetworking下载 下载任务常遇状况 原生态的分段下载的基本原理 文件下载往往需要比较长的一段时间,实现分段下载是实现断点下载的前提 实现分段下载需要解决以下两个问题 问题1:下载前,需要知道文件的长度 问题2:每一次请求下载文件的一段 针对问题1:HEAD请求获取文件长度 HEAD请求只获取响报文,而不获取资源的实际数据 通常用来获取文件长度.检测服务器端资源是否发生变化 响应对

ASI框架的使用

iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大. ASI的实现基于底层的CFNetwork框架,因此运行效率很高.可惜作者早已停止更新,有一些潜在的BUG无人去解决 ASI的github地址 https://github.com/pokeb/asi-http-request ASI的使用参考 http://www.cnblogs.com/dot

文顶顶iOS开发博客链接整理及部分项目源代码下载

文顶顶iOS开发博客链接整理及部分项目源代码下载 网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程却很难找.如果你是初学者,在学习了斯坦福iOS7公开课和跟着文顶顶的博客做项目之后,最快只需要2个月时间,就基本可以独立完成iOS App的开发工作.有经验的开发者也可以在该博客中寻找代码片段进行学习借鉴,必有所收获. 在此也向@文顶顶 表示严重感谢! 由于文顶顶博客博文繁多,每次找文章需要频繁的翻页,

文顶顶博客整理

感谢 文顶顶感谢 ashamp foundation框架 结构体 Foundation框架 字符串 Foundation框架 集合 iOS开发UI篇 Button基础 iOS开发UI篇 手写控件,frame,center和bounds属性 iOS开发UI篇 transframe属性(形变) iOS开发UI篇 简单的浏览器查看程序 iOS开发UI篇 懒加载 ios开发UI篇 安装苹果官方文档和Xcode模拟器 OC语言BLOCK和协议 iOS开发UI篇 九宫格坐标计算 iOS开发UI篇 字典转模型