使用异步(代理)方法一:
//设置网络请求
NSString * urlString = @"http://img1.touxiang.cn/uploads/20120726/26-051609_130.gif";
NSURL * URL = [NSURL URLWithString:urlString];
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:URL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setHTTPMethod:@"GET"];
//建立网络连接(异步)代理(在.h文件中设置代理NSURLConnectionDelegate和
NSURLConnectionDataDelegate)
[NSURLConnection connectionWithRequest:request delegate:self];
以下是执行的代理方法:
//服务器开始给客户端回传数据,这个方法值执行一次
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"%s%d",__FUNCTION__,__LINE__);
//服务器开始回传数据,客户端要创建一个空的.可变的data对象,用于储存每次获取的数据片段
NSHTTPURLResponse * htttpRespone = (NSHTTPURLResponse *)response;
//获取状态码
NSLog(@"statusCode =%d",htttpRespone.statusCode);
//获取http协议的响应报头
NSLog(@"allHeaderFields = %@",htttpRespone.allHeaderFields);
self.receiveData = [NSMutableData data];
}
//客户端持续接收数据,data是数据片段,整个数据分段返回,这个方法执行的次数取决于数据的总长度
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSLog(@"%s%d",__FUNCTION__,__LINE__);
[self.receiveData appendData:data];
}
//数据下载成功,客户端接收完整数据
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"%s%d",__FUNCTION__,__LINE__);
UIImage * image = [UIImage imageWithData:self.receiveData];
_image.image = image;
self.receiveData = nil;
}
//下载失败
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"%s%d",__FUNCTION__,__LINE__);
}
使用异步(Block)方法二:
NSString * urlString = @"http://img1.touxiang.cn/uploads/20120726/26-051609_130.gif";
NSURL * url = [NSURL URLWithString:urlString];
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setHTTPMethod:@"GET"];
//建立网络连接(异步)使用block
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//data是完整的数据 block无法监控过程
UIImage * image = [UIImage imageWithData:data];
_image.image = image;
}];
总结:
1.GET请求⽅方式、POST是请求⽅方式
2.同步、异步是连接⽅方式
3.网络请求的步骤:
a、NSURL;
b、NSURLRequest;
c、NSURLConnection;
d、处理Error或者返回数据