使用苹果原生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)设置代理 <NSURLConnectionDataDelegate, NSURLConnectionDelegate>
(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];
}