IOS高级编程(网络编程三)

使用异步(代理)方法一:

//设置网络请求

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或者返回数据 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值