Get异步请求

1: 使用代理

        //1.delegate
        //创建url
     NSURL *url = [[NSURL alloc] initWithString:@"http:image.zcool.com.cn/56/13/1308200901454.jpg"];
//     创建request
     NSURLRequest *urlRequesr = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30];
//     发送异步请求
//     异步请求不知道什么时候获取到数据,delegate这种模式来创建,当获取到数据后,会自动调转到代理方法中
     [NSURLConnection connectionWithRequest:urlRequesr delegate:self];

#pragma mark - NSURLConnectionDataDelegate

    //请求出现错误
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"%@", error);
}

//- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response
//{
//    
//}
    //请求收到回应(可以认为请求开始)
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSLog(@"%@", response);
    self.mData = [NSMutableData data];
     
}

    //请求获取到数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    NSLog(@"%@", data);
        //网络上的数据以包得形式,一个包一个包得传递过来,需要把收到包数据整合到一起
    [_mData appendData:data];
}

    //请求完成
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    UIImage *image = [UIImage imageWithData:_mData];

    self.view.backgroundColor = [UIColor colorWithPatternImage:image];

}

2: 使用Block

  NSURL *url = [NSURL URLWithString:@"http://image.zcool.com.cn/56/13/1308200901454.jpg"];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    [NSURLConnection sendAsynchronousRequest:urlRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        NSLog(@"%@", data);
        self.myData = data;
        [self readData];
    }];
- (void)readData {
    UIImage *image = [[UIImage alloc] initWithData:_myData];
    self.view.backgroundColor = [UIColor colorWithPatternImage:image];
}

原文地址:https://www.cnblogs.com/tian-sun/p/4310511.html