AFNetworking不能恢复下载
我正在使用AFNetworking将大文件下载到我的iPad应用程序中。
AFHTTPRequestOperation的一个实例被用来下载这个文件。 以下是供参考的代码 –
//请求是下载文件的NSRequest对象 AFHTTPRequestOperation *操作= [自我HTTPRequestOperationWithRequest:请求 成功:^(AFHTTPRequestOperation *操作,id响应对象){ }失败:^(AFHTTPRequestOperation *操作,NSError *错误){ }]; //这里pathvariables是下载文件的位置 operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path 追加:YES]; //因为这个类是AFHTTPClient的子类,所以操作被添加到请求队列中 [self enqueueHTTPRequestOperation:operation];
现在这里的问题是,当我尝试暂停,并继续使用下面的function下载,暂停下载function正常工作,但恢复下载不工作的方式,它应该和它看起来像下载从一开始我就在期待它会从它离开的地方恢复。 这里可能有什么问题?
- (无效)pauseDownload { [暂停操作]; } - (无效)resumeDownload { [恢复操作]; }
花了一段时间后,我想出了如何暂停和恢复下载。
AFNetworking有扩展其中之一是AFDownloadRequestOperation ,它主要用于处理大文件的暂停和恢复。 因此,在这里使用AFDownloadRequestOperation而不是使用AFHTTPRequestOperation。 以下是示例代码
//请求是下载文件的NSRequest对象,targetPath是下载文件的最终位置。 不要忘记将shouldResume设置为YES AFDownloadRequestOperation * operation = [[AFDownloadRequestOperation alloc] initWithRequest:request TARGETPATH:TARGETPATH shouldResume:YES]; [操作setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *操作,id响应对象){ //汉德尔完成 }失败:^(AFHTTPRequestOperation *操作,NSError *错误){ //汉德尔失败 }]; [操作setProgressiveDownloadProgressBlock:^(NSInteger bytesRead,long long totalBytesRead,long long totalBytesExpected,long long totalBytesReadForFile,long long totalBytesExpectedToReadForFile){ //汉德尔进展 }]; //因为这个类是AFHTTPClient的子类,所以操作被添加到请求队列中 [self enqueueHTTPRequestOperation:operation]; //用于暂停下载 - (无效)pauseDownload { [暂停操作]; } //用于恢复下载 - (无效)resumeDownload { [恢复操作]; }