AFNetWorking 简单介(XML,JSON解析和判断网络状态

//AFNetWorking 当下最流行的数据请求方法 里面不仅包含数据请求还包含数据解析
//包含的数据请求就是对系统类NSURLConnection的封装
//数据解析(NSJSONSerialization、XMLParser)
//AFNetworking 下至兼容ios6.0 以及block语法 arc
 
 //通过AFNetWorking请求json数据 并解析
        //<1>创建http请求操作管理者对象
        AFHTTPRequestOperationManager * manager =[AFHTTPRequestOperationManager manager];
//<2>设置请求对象向服务器请求的数据类型(json还是xml)
        manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"];
 
========也可以用============
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", @"text/xml", nil];
 
//<3>开始数据请求并且解析
        [manager GET:kJSONUrlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
            //解析数据
            //json
            if([responseObject isKindOfClass:[NSDictionary class]])
            {
                NSLog(@"%@",responseObject);
            }
            //xml 
            else if([responseObject isKindOfClass:[NSData class]])
            {
                NSLog(@"%@",responseObject);
            }
           
        } failure:^(AFHTTPRequestOperation *operation, NSError *error)
        {
            NSLog(@"error:%@",error.description);
        }];
       
    }
  
 
======当数据源为XML时我们用GData(自带的比较耗时)==============
 
        //通过AFNetworking请求xml数据并解析
       
        //<1>创建http请求操作管理对象
        AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
 
        //<2>设置请求的数据类型
        manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/xml"];
       
        //<3>xml数据解析 默认使用的XMLParser进行数据解析 这种解析方式比较复杂 一般的时候我们解析xml数据都是第三方库GData 所以此处需要关闭AFNetworking提供的xml数据解析的方法
        manager.responseSerializer = [AFHTTPResponseSerializer serializer];
       
        //<4>xml数据开始请求并解析
        [manager GET:kXMLUrlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
            if([responseObject isKindOfClass:[NSData class]])
            {
                //使用GData解析xml数据
                //<1>将所有数据解析出来方在内存中
                GDataXMLDocument * document = [[GDataXMLDocument alloc]initWithData:responseObject encoding:NSUTF8StringEncoding error:nil];
                //<2>使用xpath获取请求的内容
                NSArray * titlesArr = [document nodesForXPath:@"/doc/focus/frame/title" error:nil];
                //<3>将节点的内容打印出来
                for(GDataXMLElement * element in titlesArr)
                {
                    NSLog(@"title:%@",element.stringValue);
                }
            }
           
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"error:%@",error.description);
        }];
 
//===============判断当前网络================
 
       
  //<1>创建http请求操作管理对象
        AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
       
        //-------------扩展------------------
        [manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status)
        {
            if(status == AFNetworkReachabilityStatusReachableViaWiFi)
            {
                NSLog(@"wifi");
            }
            else if (status == AFNetworkReachabilityStatusReachableViaWWAN)
            {
                NSLog(@"3G/GPRS");
            }
            else if (status == AFNetworkReachabilityStatusNotReachable)
            {
                NSLog(@"无网络连接");
            }
        }];
        [manager.reachabilityManager startMonitoring];//获取当前网络
 

转载于:https://www.cnblogs.com/xzguo/p/4758836.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值