iOS 断点续传 —ASI

原创 2013年12月06日 11:49:11

参照网上的例子做的一次总结 切实可行

.h文件中

创建一个进度条,由ASI托管,添加开始和暂停两个事件   

#import <UIKit/UIKit.h>
#import "ASIHTTPRequest.h"
#import "ASINetworkQueue.h"

@interface ViewController : UIViewController<ASIHTTPRequestDelegate,ASIProgressDelegate>
{
    UIProgressView * _progressView;
}

@property (nonatomic,retain) UIProgressView* progressView;
@property (nonatomic,retain) ASINetworkQueue * asiNetQueue;
@property (nonatomic,retain) ASIHTTPRequest * asiHttpRequest;
- (IBAction)startClick:(id)sender;
- (IBAction)pauseClick:(id)sender;

.m文件中

@synthesize progressView=_progressView;
@synthesize asiNetQueue=_asiNetQueue;
@synthesize asiHttpRequest=_asiHttpRequest;

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    _progressView=[[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
    _progressView.frame=CGRectMake(10, 100, 300, 0);
    _progressView.progress=0.0f;
    
    
    [self.view addSubview:_progressView];
    [_progressView release];
    
    _asiNetQueue=[[ASINetworkQueue alloc] init];//开启队列
    [_asiNetQueue reset];//nil
    _asiNetQueue.showAccurateProgress=YES;
    [_asiNetQueue go];
}
//开始下载事件:
- (IBAction)startClick:(id)sender {
    NSURL * url=[NSURL URLWithString:@"http://fdfs.xmcdn.com/group1/M00/24/5E/wKgDrVH26tnQ3MJWAJJPLsXTccM542.mp3"];
    _asiHttpRequest=[ASIHTTPRequest requestWithURL:url];
    _asiHttpRequest.delegate=self;
    _asiHttpRequest.downloadProgressDelegate=self;
    
    //保存路径
    NSString * savePath=[NSHomeDirectory() stringByAppendingPathComponent:@"test.mp3"];
    
    //临时路径,开在开始后,先将已下载的数据存在临时文件中,任务完成后,将临时文件拷贝到 savePath
    NSString * temp=[NSHomeDirectory() stringByAppendingPathComponent:@"temp"];
    NSString * tempPath=[temp stringByAppendingPathComponent:@"test.mp3"];
    NSLog(@"%@",temp);
    //创建文件管理器
    NSFileManager * fileManager=[NSFileManager defaultManager];
    //判断temp文件夹是否存在,如果没有  创建
    BOOL fileExist=[fileManager fileExistsAtPath:temp];
    if (!fileExist) {
        [fileManager createDirectoryAtPath:temp withIntermediateDirectories:YES attributes:nil error:nil];
    }
    
    [_asiHttpRequest setDownloadDestinationPath:savePath];
    [_asiHttpRequest setTemporaryFileDownloadPath:tempPath];
    
    _asiHttpRequest.allowResumeForFileDownloads=YES;
    [_asiHttpRequest setDownloadProgressDelegate:self];
    
    //给当前请求设置一个标示,便于队列中有多个下载任务时 找到当前下载任务
    [_asiHttpRequest setUserInfo:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:100] forKey:@"downLoadID"]];    
    //加入队列
    [_asiNetQueue addOperation:_asiHttpRequest];
}
//暂停下载
- (IBAction)pauseClick:(id)sender {
    for (ASIHTTPRequest *request in [_asiNetQueue operations]) {
        //查看userinfo信息
        NSInteger downLoadID = [[request.userInfo objectForKey:@"downLoadID"] intValue];
        if (100 == downLoadID) {
            //判断ID是否匹配 
            //暂停匹配对象 
            [request clearDelegatesAndCancel];
        }
    }
}
//滚动条的代理方法 
-(void)setProgress:(float)newProgress
{
    [_progressView setProgress:newProgress];
}






                

IOS成长之路-ASIHTTPRequest 断点续传

1.导入ASIHTTPRequest第三方类库 下载地址:ASIHttpRequest类库         完整代码下载:下载 2.在 .h 文件中 #import #im...
  • like7xiaoben
  • like7xiaoben
  • 2012年12月03日 10:31
  • 11034

ASIHTTPRequest的使用——大文件断点续传

大文件的断点下载,只需要设置: [request setAllowResumeForFileDownloads:YES ]; [request setDownloadDestinationPath:...
  • potato512
  • potato512
  • 2016年06月15日 22:57
  • 374

iOS - ASI - ASIFormDataRequest 上传文件到服务器(转载)

ASIHttpRequest的子类ASIFormDataRequest 上传音频文件到服务器#define KURLHead_2 @"http://192.168.0.188/upload/api/...
  • kkkenty
  • kkkenty
  • 2015年06月01日 14:14
  • 1176

iOS开发网络请求中ASIHTTPRequest的用法整理

ASIHTTPRequest是一款极其强劲的HTTP访问开源项目。让简单的API完成复杂的功能, 如: 异步请求,队列请求,GZIP压缩,缓存,断点续传,进度跟踪,上传文件,HTTP认证 在...
  • yujianxiang666
  • yujianxiang666
  • 2015年04月07日 15:00
  • 1382

iOS--关于AFN和ASI的post登录请求

// AFN方式      // 1.创建一个请求操作管理者     AFHTTPRequestOperationManager *manager = [AFHTT...
  • iotjin
  • iotjin
  • 2015年10月07日 13:23
  • 954

IOS平台ASI框架 和 AFN框架 之Https通讯

目前很多APP都要求支持Https通讯,现在大多APP都是AFN 或者 ASI框架之上实现的网络通讯层。 以下总结了一下,AFN 和 ASI框架之下,如何实现Http 和 Https都支持。(这个知...
  • sbvfhp
  • sbvfhp
  • 2016年03月26日 20:16
  • 2567

Xcode6中添加ASIHTTPRequest库的方法

虽然关于此库有大量如何添加使用的方法,不过实际添加时候经常会项目报错,很是烦人。这里就总结下解决办法吧。 1:下载 这里直接在Github上即可下载了。地址:Github下载 2...
  • u011073953
  • u011073953
  • 2016年01月30日 16:19
  • 244

AFN和ASI的底层实现和区别

本篇将从四个方面对iOS开发中经常使用到的AFNetworking框架进行讲解: 一、什么是 AFN 二、为什么要使用 AFN 三、AFN 怎么用 三、AFN和ASI的区别   一、什么是 ...
  • iOSbird
  • iOSbird
  • 2016年08月01日 16:46
  • 1775

IOS中使用ASIHTTPRequest中https请求详解

首先,先介绍下ASIHTTPRequest,这个可以从网络上直接下载
  • baicai_520
  • baicai_520
  • 2014年09月18日 12:51
  • 2999

IOS常用第三方框架 --- ASIHTTPRequest 网络请求

ASIHTTPRequest是对CFNetwork API的一个包装,它提供了一套更加简洁的API,使用起来也更加简单。 官方网站:http://allseeing-i.com/ASIHTTPR...
  • u012383818
  • u012383818
  • 2015年05月15日 15:08
  • 476
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 断点续传 —ASI
举报原因:
原因补充:

(最多只允许输入30个字)