我使用ASIHTTP Request示例源代码下载网址。 我的问题是如何暂停和恢复下载文件。
请帮助。
答案 0 :(得分:4)
ASIHTTP在2011年左右被弃用,如果您现在想要网络连接,您应该查找AFNetworking for ObjC或Alamofire for Swift,或者坚持原生支持:
对于本机支持,在iOS 7中Apple添加了NSURLSession
,可以启动下载任务(NSURLSessionDownloadTask
),这些任务可以取消并重新启动,请检查
downloadTaskWithResumeData(_:)
中的方法{ {1}},这有很好的解释。
不再需要ASIHTTP,如果你要保持遗留应用程序运行,那么,祝你好运。
发布于2011年
ASI本身可以使用NSURLSession
从文件中恢复下载,请查看How-to-Use以获取示例。
编辑:好的,暂停下载没有简单的方法([myASIRequest setAllowResumeForFileDownloads:YES];
是理想的选择)。在阅读并尝试了一段时间后,结果是取消请求并再次重新发送是唯一的方法。
例如,这是我做的一个示例类:
[myRequest pause]
开始(或重新启动)下载:
@interface TestViewController : UIViewController <ASIHTTPRequestDelegate>
{
ASIHTTPRequest *requestImage;
UIImageView *imageViewDownload;
}
@property (nonatomic, retain) IBOutlet UIImageView *imageViewDownload;
- (IBAction)didPressPauseButton:(id)sender;
- (IBAction)didPressResumeButton:(id)sender;
在上面的例子中,我正在加载我发现的奶酪的随机图像,并存储临时下载和完整下载。
取消请求将保持临时文件的内容不变,事实上,我制作了一个UIImageView,当按下“取消”时,我可以看到下载文件的一部分。如果你想尝试一下:
- (IBAction)didPressResumeButton:(id)sender
{
if (requestImage)
return;
NSLog(@"Resumed");
// Request
requestImage = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"http://www.myheadhealth.com/_IMAGES/cheese.jpg"]];
// Using a temporary destination path just for show.
// Better pick a suitable path for your download.
NSString *destinationDownloadPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"cheese.jpg"];
NSString *temporaryDownloadPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"cheese.jpg-part"];
requestImage.downloadDestinationPath = destinationDownloadPath;
requestImage.temporaryFileDownloadPath = temporaryDownloadPath;
requestImage.allowResumeForFileDownloads = YES;
requestImage.delegate = self;
[requestImage startAsynchronous];
}