AFNetworking 3.0 断点续传 使用记录

Posted 慢慢儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AFNetworking 3.0 断点续传 使用记录相关的知识,希望对你有一定的参考价值。

最近项目中用到了压缩包下载,使用AFNetworking 3.0 下载压缩包 支持断点续传 代码如下:

#import "HDInternet_handler.h"
#import "AFNetworking.h"
#import "ASIHTTPRequest.h"

@interface HDInternet_handler ()<NSURLSessionDelegate>

@end

@implementation HDInternet_handler
{
    NSURLSessionDownloadTask *_downloadTask;
}

-(void)test
{
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    
    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:configuration];
    
    manager.requestSerializer.timeoutInterval = 3.0;
    
    [manager setDownloadTaskDidWriteDataBlock:^(NSURLSession * _Nonnull session, NSURLSessionDownloadTask * _Nonnull downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
        
        LOG(@"%.2f / %.2f",(float)totalBytesWritten/1024.0/1024.0,(float)totalBytesExpectedToWrite/1024.0/1024.0);
    }];
    
    NSURL *URL = [NSURL URLWithString:@"http://192.168.10.155/12345/HD_DEMO_RES/CHINESE.zip"];//http://192.168.10.155/12345/HD_DEMO_RES/CHINESE.zip
    NSURLRequest *request = [NSURLRequest requestWithURL:URL];
    
    _downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
        
        NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSCachesDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
        return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
    } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
       
    }];
    
    [_downloadTask resume];
    [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(suspend) userInfo:nil repeats:NO];
}

-(void)suspend
{
    //暂停下载
    [_downloadTask suspend];
    LOG(@"SUSPEND.....SUSPEND....SUSPEND....SUSPEND....SUSPEND....SUSPEND....");
    [NSTimer scheduledTimerWithTimeInterval:6.0 target:self selector:@selector(resume) userInfo:nil repeats:NO];
}

-(void)resume
{//继续下载
    [_downloadTask resume];
    LOG(@"RESUME.....RESUME.....RESUME.....RESUME.....RESUME.....RESUME.....RESUME.....");
}

 

以上是关于AFNetworking 3.0 断点续传 使用记录的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking实现程序重新启动时的断点续传

11_断点续传原理

http协议 文件下载原理及多线程断点续传

使用rsync -arLP进行断点续传

java web断点续传,我用的是fileupload来做的上传。

OSS android 断点续传,不知道怎么上传文件写入内存,没有被回收掉