NSURLRequest 简单的网络请求

废话不说 代码如下 

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    NSURL* url = [NSURL URLWithString:@"http://img21.mtime.cn/mg/2012/03/25/112544.76654880.jpg"];
    _imageData = [[NSMutableData alloc] init];
    
    //进度条
    _pv = [[UIProgressView alloc] initWithFrame:CGRectMake(50, 50, 220, 20)];
    [self.view addSubview:_pv];
    [_pv release];
    
    
    //创建一个请求
  //NSURLRequest* request = [NSURLRequest requestWithURL:url];
    NSURLRequest* request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:30];
    //发送请求
    [NSURLConnection connectionWithRequest:request delegate:self];
}

//接收响应头
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    NSLog(@"接收到响应头");
    [_imageData setLength:0];
    //拿到响应体长度
    NSHTTPURLResponse* res = (NSHTTPURLResponse*)response;
    _length = [[res.allHeaderFields objectForKey:@"Content-Length"] floatValue];
    NSLog(@"length:%f",_length);
    //是否 开启 网络开关 状态栏的
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}

//接收响应体,下载数据
/*
 0 1 2 3 4 5 6 7 8 9
 0 1
     2 3 4 
           5 6 7
                 8 9
 0 1 2 3 4 5 6 7 8 9
 */
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    NSLog(@"接收响应体");
    //把每次下载的数据添加到一起
    [_imageData appendData:data];
    
    //刷新进度条
    [_pv setProgress:_imageData.length / _length animated:YES];
}

//成功
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
    NSLog(@"成功");
    UIImage* image = [UIImage imageWithData:_imageData];
    self.view.backgroundColor = [UIColor colorWithPatternImage:image];
    
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

//失败
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    NSLog(@"失败");
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}


你可能感兴趣的:(NSURL,NSURLRequest,简单的网络请求)