zoukankan      html  css  js  c++  java
  • NSConnection_异步下载_代理

    NSURLConnection的Delegate回调函数

     

    接收到服务器的响应

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

     

    接收到服务器发送过来的数据,数据是分段发给我们的,所以这个方法会被调用多次

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

     

    服务器所有的数据都发送完成之后,会调用这个方法

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

     

    请求失败(url不合法、超时、网络中断等等)时会调用这个方法

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

     

     1     //字符串地址
     2     NSString *path=@"http://10.0.8.8/sns/my/user_list.php";
     3     
     4     //转网址
     5     NSURL *url=[NSURL URLWithString:path];
     6     
     7     //请求类   创建请求对象
     8     NSURLRequest *request=[NSURLRequest requestWithURL:url];
     9     
    10     
    11     //设置代理   发送异步请求  代理方法
    12     self.connection=[NSURLConnection connectionWithRequest:request delegate:self];17     
    18 }
    19 
    20 
    21 //建立连接  完成了请求  接收响应
    22 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    23     
    24     NSLog(@"收到服务器响应,即将建立链接,下载数据");
    25     if ([response isKindOfClass:[NSHTTPURLResponse class]] == YES) {
    26         //如果协议是http响应,证明响应是正确的,打印响应的状态
    27         NSHTTPURLResponse * httpresponse = (id)response;
    28         //        NSHTTPURLResponse继承自NSURLResponse
    29         NSLog(@"%ld", (long)httpresponse.statusCode);
    30         //200成功  404 是错误,没有响应。
    31     }
    32     
    33     //收到响应之后,connection会自然的建立链接,下载数据。
    34     
    35     //清空_data
    36     if (_mdata==nil) {
    37         _mdata=[[NSMutableData alloc]init];
    38     }
    39     _mdata.length = 0;
    40     
    41 }
    42 
    43 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    44 {
    45     NSLog(@"收到数据");
    46     //如果数据比较大,这个函数会反复调用,每次获取部分数据,数据就是参数data
    47     
    48     //将每次下载到的数据,拼接到_data中
    49     [_mdata appendData:data];
    50 }
    51 
    52 - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    53 {
    54     NSLog(@"数据接收完毕");
    55     
    56     NSLog(@"%s", _mdata.bytes);
    57     //解析
    58     if (_mdata) {
    59         
    60         id obj=[NSJSONSerialization JSONObjectWithData:_mdata options:NSJSONReadingMutableContainers error:nil];
    61         
    62         NSLog(@"%@",obj);
    63     }
    64     
    65 }
    66 
    67 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
    68 {
    69     NSLog(@"下载发生错误 %@", error);
    70 }
  • 相关阅读:
    底部导航栏
    判断手机是否连接网络
    瀑布流(圆角,卡片效果)
    列表卡片效果
    使用Glide改变图片的圆角
    条形码EAN-13码和EAN-8码的原理
    自定义底部弹窗
    【代码笔记】Java常识性基础补充(一)——赋值运算符、逻辑运算符、三元运算符、Scanner类、键盘输入、Random类、随机数
    【Android】9.0活动的生命周期(二)——实际代码演示
    【Android】8.0活动的生命周期(一)——理论知识、活动的启动方式
  • 原文地址:https://www.cnblogs.com/konglei/p/4830519.html
Copyright © 2011-2022 走看看