NSURLRequest,NSURLConnection 下载

记录下自己的练习: 

        没有断点续传,下次再做。只是简单的下载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);
}

只是简单的去下载,没有去作别的操作.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值