网络请求NSURLConnection

使用苹果原生NSURLConnection来做url链接请求,当然请求有同步和异步请求之分。


1 同步请求

// 1 请求地址

NSURL *urlImage = [NSURL URLWithString:url];

// 2 请求实例化

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:urlImage cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15.0];

// 3 请求信息获取

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

// 4 使用信息

if (0 != data.length)

{


}

// 5 

[NSURLConnection cancelPreviousPerformRequestsWithTarget:self];



2 异步请求

2-1 通过代理回调

注意事项:

(1)设置代理 <NSURLConnectionDataDelegateNSURLConnectionDelegate>

(2)属性设置

(2-1)@property (nonatomic, strong) NSURLConnection *connection;

(2-2)@property (nonatomic, strong) NSMutableData *imageData;


- (void)imageloadWithUrl:(NSString *)url

{

    NSURL *urlImage = [NSURL URLWithString:url];

    

    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:urlImage cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15.0];

    self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

    [self.connection start];

}


- (void)stopConnection

{

    if (self.connection)

    {

        [self.connection cancel];

        self.connection = nil;

    }

}


#pragma mark - NSURLConnectionDataDelegate, NSURLConnectionDelegate


- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

    self.imageData = [NSMutableData data];

}


- (void)connection:(NSURLConnection *)connetion didReceiveData:(NSData *)data

{

    [self.imageData appendData:data];

}


- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

    // 实际图标 得到最终的receivedData

    UIImage *realImage = [[UIImage alloc] initWithData:self.imageData];

}


- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

{

    

}


2-2 通过代码块回调

- (void)imageloadBlockWithUrl:(NSString *)url

{

    NSURL *urlImage = [NSURL URLWithString:url];

    

    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:urlImage cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15.0];

    // 创建一个队列(默认添加到该队列中的任务异步执行)

    // NSOperationQueue *queue=[[NSOperationQueue alloc]init];

    // 获取一个主队列

    NSOperationQueue *queue = [NSOperationQueue mainQueue];

    __weak 当前使用类 *selfWeak = self;

    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

        

        // 实际图标 得到最终的receivedData

        UIImage *realImage = [[UIImage alloc] initWithData:data];

    }];

    

    // [NSURLConnection cancelPreviousPerformRequestsWithTarget:self];

}



你可能感兴趣的:(网络请求NSURLConnection)