记录下自己的练习:
没有断点续传,下次再做。只是简单的下载demo。
点击下载按钮
- (IBAction)selectDownLoadBtn:(id)sender {
if (connection) {
return;
}
NSURL *url = [NSURL URLWithString:DOWNLOAD];
NSMutableURLRequest *reqeust= [NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[reqeust setHTTPMethod:@"GET"];
connection = [[NSURLConnection alloc]initWithRequest:reqeust delegate:self];
if (connection) {
mutableData = [[NSMutableData alloc]init];
}
}
执行回调方法:主要有四个
#pragma mark-
#pragma mark- NSURLConnectionDataDelegate
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"response");
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
if (httpResponse && [httpResponse respondsToSelector:@selector(allHeaderFields)]) {
NSDictionary *httpResponseHeaderFields = [httpResponse allHeaderFields];
mFileSize = [httpResponseHeaderFields[@"Content-Length"] longLongValue];//获取文件的大小
}
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSLog(@"data");
//接受数据,在接受完成之前会一直掉重复调用
[mutableData appendData:data];
//label的值
self.myLabel.text = [NSString stringWithFormat:@"%.f%@",([mutableData length]/(float)mFileSize)*100,@"%"];
//进度条
[self.myProgress setProgress:[mutableData length]/(float)mFileSize];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"error = %@",error);
//出错时调用
NSLog(@"Connection failed! Error - %@ %@",
[error localizedDescription],
[[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"完成的时候调用");
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"android.mp4"];
[mutableData writeToFile:filePath atomically:NO];//将数据写入Documents目录。
NSLog(@"%@",filePath);
}
只是简单的去下载,没有去作别的操作.