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];//获取当前网络
 
posted @ 2015-08-25 22:05  BN笨的很想飞  阅读(470)  评论(0编辑  收藏  举报