上篇的连接方式皆为同步连接,这次就详细介绍一下网络连接的方式


 

一、连接方式分两种:同步和异步

       同步连接

        1, 使用 [NSURLConnection sendSynchronousRequest:]方法

        2,会出现卡顿现象

       异步连接分两种:block delegate 

         1),  block 的使用方法是[NSURLConnection sendAsynchronousRequest:requset queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

    

     }];

      该方法需要两个参数:request 请求

                       queue 队列,一般情况是currentQueue

     注意:

       block里面的代码不会立即执行,只有当服务器请求完数据之后才会执行。

  

   2),  delegate的使用方法:

      1,带delegate的异步连接将数据下载进度封装在了协议中,故一般情况下会使用此连接方式

      2 delegate的连接也是异步连接,界面先出来,之后才获取到数据,故问题和block一样

       注意:

         代理中一个名为didReceiveData:方法, data不是已经下载的data,需要自己拼接


 

二、同步连接步骤

    NSURL *url = [NSURL URLWithString:网址字符串];

    NSURLRequest *requset = [NSURLRequest requestWithURL:url cachePolicy:( NSURLRequestUseProtocolCachePolicy) timeoutInterval:15];

    NSURLResponse *response = nil;

    NSError *error = nil;

    NSData *data = [NSURLConnection sendSynchronousRequest:requset returningResponse:&response error:&error];

  


 

三、异步连接

 1,block方法

     NSURL *url = [NSURL URLWithString:网址字符串];

    NSURLRequest *requset = [NSURLRequest requestWithURL:url cachePolicy:( NSURLRequestUseProtocolCachePolicy) timeoutInterval:15];

    [NSURLConnection sendAsynchronousRequest:requset queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

       // 在此可以解析数据,展示图片什么的

    }];

 2, 代理方法

     NSURL *url = [NSURL URLWithString:网址字符串];

    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

    [[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];

    接受协议后代理方法有 

    接收响应

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

 

  }

 接收到数据

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

     

}

// 数据获取完毕

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{

    

        

}

// 获取失败

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

  

}

 

posted on 2015-09-12 14:23  竹间Code  阅读(177)  评论(0编辑  收藏  举报