NSURLConnect的使用

    在ios7 以前使用 NSURLConnect发起网络请求,在ios7之后使用NSURLSession发起网络请求。

    发起网络请求分三个部分:

    一、设置NSURL

    二、设置NSURLRequest

    三、发起网络请求 NSURLConnect  NSURLMutableConnect

    相应返回的方式有两种 block、delegate

    下面的.m文件使用delegate监控网络交互

//
//  ViewController.m
//  URLConnectDemo
//


#import "ViewController.h"

@interface ViewController ()<NSURLConnectionDelegate,NSURLConnectionDataDelegate>
{
    NSMutableData *receiveData;
    NSURLConnection *theConnection;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    
//    1、先创建一个NSURL
//    2、再通过NSURL创建NSURLRequest,可以指定缓存规则和超时时间
//    3、创建NSURLConnection实例,指定NSURLRequest和一个delegate对象
//    如果创建失败,则会返回nil,如果创建成功则创建一个NSMutalbeData的实例用来存储数据
    
    NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]
                                                cachePolicy:NSURLRequestUseProtocolCachePolicy
                                            timeoutInterval:60.0];
    
    //当收到initWithRequest: delegate: 消息时,下载会立即开始,在代理(delegate)
    theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
    
    if(theConnection){
        //创建NSMutableData
        receiveData = [NSMutableData data];
    }else{
        //创建失败
        
    }
}

//【要注意】,一个简单的连接也可能会收到多个connection:didReceiveResponse:消息当服务器连接重置或者一些罕见的原因(比如多组mime文档),代理都会收到该消息这时候应该重置进度指示,丢弃之前接收的数据
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    
    [receiveData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    
    [receiveData appendData:data];
}
//当代理接收到连接的connection:didFailWithError消息后,对于该连接不会在收到任何消息
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    
    theConnection = nil;
    
    NSLog(@"Connection failed! Error - %@ %@",[error localizedDescription],[[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
}
//数据下载完毕,最后,如果连接请求成功的下载,代理会接收connectionDidFinishLoading:消息代理不会收到其他的消息了,在消息的实现中,应该释放掉连接
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
    
    NSString *s = [[NSString alloc] initWithData:receiveData encoding:NSUTF8StringEncoding];
    NSLog(@"succeeded %@",s);
    theConnection = nil;
    [receiveData setLength:0];
}

@end

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值