0
请求的URL在AFNetworking中启动后是否有任何简单的方法可以更新? 假设我的应用程序正在下载一个2GB的块,我们将有200块每块10MB。对于每个我创建一个AFHTTPRequestOperation并将其添加到队列中。请求中的AFNetworking更新URL
问题是,我正在下载的服务器在所有URL上都超时,这意味着在那段时间后我会得到403,并且必须生成一个新的URL。我需要在时间耗尽之前做到这一点。
for (DownloadFile *downloadFile in [download filesInTheDownload])
{
for (DownloadChunk *downloadChunk in [downloadFile chunksInTheFile])
{
NSURL *fileURL = [[NSURL alloc] initWithString:[downloadFile filePath]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:fileURL];
NSLog(@"Normal range: %lli-%lli", [downloadChunk startingByte], [downloadChunk endingByte]);
NSString *range = [NSString stringWithFormat:@"bytes=%lli-%lli", newStartingByte, [downloadChunk endingByte]];
[request setValue:range forHTTPHeaderField:@"Range"];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:chunkPath append:YES];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@", [NSString stringWithFormat:@"Chunk complete: %@.%i", [downloadFile fileName], [downloadChunk chunkId]]);
if (download.downloadedBytes == download.size)
[[NSNotificationCenter defaultCenter] postNotificationName:@"downloadFinished" object:download];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
[operation setDownloadProgressBlock:^(NSInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
download.downloadedBytes += bytesRead;
}];
[queue addOperation:operation];
}
}
是的,我在考虑这两种情况,但认为我也可以通过继承AFHTTPNetworking或其他方式来实现;) – Thunder 2012-08-16 12:55:24
当然,但它会带来维护的复杂性;) – Farcaller 2012-08-16 13:29:46