我正在使用AFHTTPRequestOperation下载AFNetworking文件。
我希望用户能够在失败后恢复下载(无论是超时还是丢失连接......)。
我该怎么做?
我已经读过AFDownloadRequestOperation会这样做,但这不是AFNetworking的正式部分,而且它不是最新的。
如何恢复下载失败?
答案 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];
确保以“bytes = fromBytes-totalBytes”格式正确设置范围的http标头。一个例子是“bytes = 3200-12000”
确保在进行新操作时,将输出流更改为APPEND:YES。这样下载的字节就会附加到之前下载的字节中。