iOS - 失败后AFNetworking恢复下载

时间:2015-09-24 03:13:03

标签: ios download afnetworking resume

我正在使用AFHTTPRequestOperation下载AFNetworking文件。

我希望用户能够在失败后恢复下载(无论是超时还是丢失连接......)。

我该怎么做?

我已经读过AFDownloadRequestOperation会这样做,但这不是AFNetworking的正式部分,而且它不是最新的。

如何恢复下载失败?

1 个答案:

答案 0 :(得分:1)

所以我能够通过这样做恢复:

首先,我让我的应用程序记住“totalBytesRead”和“totalBytesExpectedToRead”。

 [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {...}

然后,当下载失败时,我有一个重试按钮。当用户点击按钮时,我会调用此代码

 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:@"www.myfileURL.com/file.mp4" cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

NSString* range = [NSString stringWithFormat:@"bytes=%lli-%lli", totalBytesRead, totalBytesExpectedToRead];
[request setValue:range forHTTPHeaderField:@"Range"];


operation =   [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:myPath append:YES];
  1. 确保以“bytes = fromBytes-totalBytes”格式正确设置范围的http标头。一个例子是“bytes = 3200-12000”

  2. 确保在进行新操作时,将输出流更改为APPEND:YES。这样下载的字节就会附加到之前下载的字节中。