- (IBAction)URLFetchWithProgress:(id)sender
{
[startButton setTitle:@"Stop" forState:UIControlStateNormal];
[startButton addTarget:self action:@selector(stopURLFetchWithProgress:)forControlEvents:UIControlEventTouchUpInside];
NSString*tempFile = [[[[NSBundle mainBundle] bundlePath]stringByDeletingLastPathComponent]stringByAppendingPathComponent:@"MemexTrails_1.0b1.zip.download"];
if ([[NSFileManager defaultManager] fileExistsAtPath:tempFile]) {
[[NSFileManager defaultManager] removeItemAtPath:tempFile error:nil];
}
[self resumeURLFetchWithProgress:self];
}
- (IBAction)stopURLFetchWithProgress:(id)sender
{
networkQueue = [[ASINetworkQueue alloc] init];
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:selfselector:@selector(updateBandwidthUsageIndicator) userInfo:nil repeats:YES];
timer = nil;
[startButton setTitle:@"Stop" forState:UIControlStateNormal];
[startButton addTarget:self action:@selector(URLFetchWithProgress:)forControlEvents:UIControlEventTouchUpInside];
[networkQueue cancelAllOperations];
[resumeButton setEnabled:YES];
}
- (IBAction)resumeURLFetchWithProgress:(id)sender
{
[resumeButton setEnabled:NO];
[startButton setTitle:@"Start" forState:UIControlStateNormal];
[startButton addTarget:self action:@selector(stopURLFetchWithProgress:)forControlEvents:UIControlEventTouchUpInside];
[networkQueue cancelAllOperations];
[networkQueue setShowAccurateProgress:YES];
[networkQueue setDownloadProgressDelegate:progressIndicator];
[networkQueue setDelegate:self];
[networkQueue setRequestDidFinishSelector:@selector(URLFetchWithProgressComplete:)];
ASIHTTPRequest*request=[[[ASIHTTPRequest alloc] initWithURL:[NSURLURLWithString:@"http://9991.net/blog/mp3/2.mp3"]] autorelease];
[request setDownloadDestinationPath:[[[[NSBundle mainBundle] bundlePath]
stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"MemexTrails_1.0b1.mp3"]];
[request setTemporaryFileDownloadPath:[[[[NSBundle mainBundle] bundlePath]stringByDeletingLastPathComponent]stringByAppendingPathComponent:@"MemexTrails_1.0b1.zip.down"]];
[request setAllowResumeForFileDownloads:YES];
[networkQueue addOperation:request];
[networkQueue go];
}
- (void)URLFetchWithProgressComplete:(ASIHTTPRequest *)request
{
if ([request error]) {
fileLocation.text=[NSString stringWithFormat:@"An error occurred:%@",[[[requesterror] userInfo] objectForKey:@"Title"]];
} else {
fileLocation.text=[NSString stringWithFormat:@"File downloaded to %@",[requestdownloadDestinationPath]];
}
[startButton setTitle:@"Start" forState:UIControlStateNormal];
[startButton addTarget:self action:@selector(URLFetchWithProgress:)forControlEvents:UIControlEventTouchUpInside];
}
- (IBAction)throttleBandwidth:(id)sender
{
if ([(UIButton *)sender state] ==YES) {
[ASIHTTPRequest setMaxBandwidthPerSecond:ASIWWANBandwidthThrottleAmount];
} else {
[ASIHTTPRequest setMaxBandwidthPerSecond:];
}
}
相关推荐
在这个特定的主题中,我们关注的是"ASIHTTPRequest实现资源的下载,断点续传"。断点续传是一项重要的下载技术,尤其在处理大文件或网络不稳定时,它允许用户暂停下载并在稍后继续,而无需重新开始。 首先,了解断点...
此外,此项目未实现断点续载功能。断点续载是指在下载过程中,如果因为网络问题中断,可以从上次中断的地方继续下载,而不是从头开始。在ASIHTTPRequest中,可以通过setShouldResumeDownloads:YES来开启断点续载功能...
为了实现断点续传,ASIHttpRequest提供`shouldResumeDownload`属性,当该属性设置为YES时,ASIHttpRequest会检查本地是否存在部分下载的文件,并尝试从中恢复下载。同时,你可以通过`downloadDestinationPath`设置...
8. **断点续传**:对于大文件下载,ASIHTTPRequest支持断点续传,即在中断后能从上次停止的地方继续下载。 9. **错误处理**:当请求失败时,会返回一个错误对象,包含了错误代码和描述,方便调试。 10. **自定义...
- ASIHTTPRequest 支持断点续传,这在下载大文件时非常有用,通过 `-[ASIHTTPRequest setShouldResumeDownloadFromData:]`。 9. **身份验证**: - 提供了对 HTTP 基本认证和 Digest 认证的支持,如 `-...
`:暂停和恢复下载操作,用于实现断点续传功能。 5. `- (long long)contentLength;`:获取服务器返回的文件总长度。 6. `- (long long)bytesDownloaded;`:获取当前已下载的字节数。 在实现断点续传时,开发者还...
7. **断点续传**:对于大文件的下载,ASIHttpRequest支持断点续传,即使在下载过程中应用程序被关闭或设备重启,也能从上次中断的地方继续下载。 8. **请求队列管理**:可以将多个请求放入队列,按照顺序或并行执行...
在ASIHTTPRequest库中,实现断点续传下载的关键在于使用`setAllowResumeForFileDownloads:`方法和`setShouldTryToResume:`方法。前者允许请求在可能的情况下尝试恢复之前中断的下载,而后者则指示ASIHTTPRequest是否...
10. **断点续传**:对于大文件下载,ASIHTTPRequest支持断点续传,即暂停下载后可以从上次停止的地方继续。 关于导入ASIHTTPRequest到项目中的步骤: 1. 下载最新版本的ASIHTTPRequest库,通常是一个.zip文件。 2....
5. **断点续传**:对于大文件下载,ASIHTTPRequest支持断点续传功能,即使下载中断,下次也能从上次断点处继续下载。 6. **请求状态监控**:提供了丰富的请求状态回调,如开始、结束、错误等,方便开发者跟踪请求...
如果请求是下载操作,ASIHTTPRequest支持断点续传。通过保存和恢复请求的状态,可以在应用程序下次启动时从上次中断的地方继续下载。 7. **自动处理cookies**: ASIHTTPRequest会自动处理服务器返回的cookies,...
在iOS中实现断点续传通常需要保存当前下载的文件大小和URL,当再次启动下载时,根据这些信息定位到已下载的数据位置,然后继续从那里下载剩余部分。 3. **单例模式**:在iOS开发中,单例是一种设计模式,常用于管理...
使用ASIHTTPRequest进行断点续传下载,需要设置请求头中的`If-Range`和`Range`字段,以指定从哪个位置开始下载。 总结,iOS应用在进行文件下载时,使用多线程异步下载可以提升用户体验,结合断点续传技术,即使在...
1.基于ASIHttpRequest的断点续传功能,进一步封装,自定义了下载队列,包括下载中、已完成队列,并且用CoreData对其持久化封装,使用简单,资源url作为标示,传入网络资源url和本地path即可。 2.队列使用字典进行...
8. **断点续传**:对于大文件下载,ASIHTTPRequest 支持断点续传,即使下载中断,也能从上次停止的地方继续。 9. **错误处理**:框架提供了丰富的错误信息,方便调试和处理异常情况。 然而,尽管 ASIHTTPRequest ...
同时,它也支持断点续传和后台下载,这对于大文件的下载尤其有用。 6. **进度回调** 通过代理方法或者block,可以实现请求的进度回调,用于显示下载或上传进度: ```objc [request setDownloadProgressBlock:^...
4. **断点续传**:对于大文件下载,ASIHttpRequest 支持断点续传,即使在下载过程中中断,也可以从上次中断的位置继续下载。 5. **上传和下载进度反馈**:提供回调函数,可以实时获取上传或下载的进度,方便显示...