注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

ASIHTTPRequest使用  

2013-05-02 22:58:15|  分类: ios开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近研究Http网络访问的相关知识,发现IOS上开源的ASIHTTPRequest包非常好用,能非常方便的解决Http网络访问中的文件断点续传、断点下载等问题。

下面简单介绍IOS中ASIHTTPRequest包配置和ASIHTTPRequest网络访问相关方法。
ASIHTTPRequest包是开源的,在GitHub上可以免费下载(点击下载)。
下载的文件包括ASIHTTPRequest程序集和一些示例程序,下载完成后将Classes文件夹和External文件夹中的内容拷贝到工程目录下,并对工程进行一些必要的配置。

以iphone开发为例,配置方法如下:
1、添加SystemConfiguration.framework, MobileCoreServices.framework,CoreGraphics.framework和libz.1.2.3.dylib(可能不一样,个人用的是libz.dylib),libxml2.dylib到工程中,Build Settings的Header Search Paths中加入 /usr/include/libxml2。初学者可查看详细添加流程
2、关闭ARC
在工程的TARGETS属性页中选择Build Settings页面找到 Objective-c++Automatic Reference Counting并将值设置为NO(可能是ASIHTTPRequest有用到C++,不关闭ARC会编译不过)
编译工程,如果没有错误说明配置成功。

简单使用介绍
文件断点下载
初始化处理队列(支持线程下载)
@property(retain, nonatomic) ASINetworkQueue *queue;

- (void)viewDidLoad
{
[super viewDidLoad];
queue = [[ASINetworkQueue alloc] init];
//设置支持较高精度的进度追踪
[queue setShowAccurateProgress:YES];
//启动队列,启动后,添加到队列的请求会自动执行
[queue go];
}
开始下载(继续下载代码跟开始下载一致)
- (IBAction)startDownload:(id)sender
{
NSString *path =@”/Developer/”;
//下载路径(放在开发目录下便于查看文件)
downloadPath = [path stringByAppendingPathComponent:@"test.jpg"];
//要支持断点续传,缓存路径是不能少的。
NSString *tempPath = [path stringByAppendingPathComponent:@"temp.jpg"];
//下载链接
NSString *urlStr = @”http://cnwan.com.cn/uploads/allimg/2010-06/261J505-1-112F.jpg”;
NSURL *url = [NSURL URLWithString:urlStr];
//创建请求
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
//设置代理,别忘了在头文件里添加ASIHTTPRequestDelegate协议
request.delegate = self;
//设置下载路径
[request setDownloadDestinationPath:downloadPath];
//设置缓存路径
[request setTemporaryFileDownloadPath:tempPath];
//设置支持断点续传
[request setAllowResumeForFileDownloads:YES];
//下载进度代理可以直接用UIProgressView对象,它会自动更新,如果你想做更多的处理
//就必须用我们自定义的类,只要我们的类里实现了setPorgress:方法
request.downloadProgressDelegate = self;
//将请求添加到之前创建的队列里,这时请求已经开始执行了
//队列会retain添加进去的请求
[queue addOperation:request];
}
//暂停下载
- (IBAction)suspendDownload:(id)sender
{
//operations方法返回队列里的所有请求,但我们只有一个请求
ASIHTTPRequest *request = [[queue operations] objectAtIndex:0];
//取消请求
[request clearDelegatesAndCancel];
}

实现ASIHTTPRequestDelegate, ASIProgressDelegate委托方法,通过重写委托函数可以判断下载文件大小,下载完成时机,是否下载失败等。
//进度条更新范围0-1
- (void)setProgress:(float)newProgress
{

}

//文件总大小
- (void)request:(ASIHTTPRequest *)request incrementDownloadSizeBy:(long long)newLength
{

}

//文件已经下载的字节数
- (void)request:(ASIHTTPRequest *)request didReceiveBytes:(long long)bytes
{

}

//下载完成
- (void)requestFinished:(ASIHTTPRequest *)request
{

}

//下载失败
- (void)requestFailed:(ASIHTTPRequest *)request
{

除了网络访问外ASIHTTPRequest还扩展了开源GZip数据格式的相关方法,方便网络数据的压缩和解压缩。

  评论这张
 
阅读(104)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017