码迷,mamicode.com
首页 > Web开发 > 详细

AFNetWorking进行网络请求

时间:2015-06-26 13:24:27      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

//AFNetWorking是现在最流行的数据请求方法,不仅包含数据请求,还包含数据解析(也就是同时封装了系统请求类的NSURLConne 和NSJSonSerialization 和NSXMLParser)
//能够兼容IOS6.0也兼容block 语法,同时兼容arc

第一步导入第三方库

第二步 导入头文件  #import "AFHTTPRequestOperationManager.h"

第三步初始化请求队列管理者对象
        AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];

第四步

设置请求数据的样式  只在请求JSON数据时才设置,XML时不设置

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"];//@"application/json"固定不变

第五步:开始请求数据并解析(json数据)

//<4>开始请求数据并解析数据.第一个参数,接口地址
        [manager GET:kJSONUrlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
            //responseObject请求下来的数据
            if ([responseObject isKindOfClass:[NSDictionary class]]) {
                //json数据
                NSLog(@"%@",responseObject);
            }
            else if ([responseObject isKindOfClass:[NSData class]])
            {
                //XMl数据
                NSLog(@"%@",responseObject);
            }
            else if ([responseObject isKindOfClass:[NSArray class]])
            {
                //json数据
                NSLog(@"%@",responseObject);
            }
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"error:%@",error.description);
        }];

如果是XML数据则为(因为AF自带的XML解析很麻烦,所以我们一般用第三方库GData进行解析)

 //请求XML数据,AFNetWorking自带的Xml数据解析类是NSXMLParser,该方法解析XML数据方法比较复杂 我们可以使用GData进行数据解析
        //<1>设置请求对象的管理者对象
        AFHTTPRequestOperationManager * manger = [AFHTTPRequestOperationManager manager];
        //<2>需要关闭AFNetWorking提供的XML数据解析
        manger.responseSerializer = [AFHTTPResponseSerializer serializer];
        //<3>开始异步请求并且开始Xml数据解析
        [manger GET:kXMLUrlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
            if ([responseObject isKindOfClass:[NSData class]]) {
                //使用GData进行
                //《1》将所有数据都解析出来放到内存中
                GDataXMLDocument * doc = [[GDataXMLDocument alloc]initWithData:responseObject encoding:NSUTF8StringEncoding error:nil];
                //<2>通过XPath查找解析的数据的路径
                NSArray * elements = [doc nodesForXPath:@"/doc/news/title" error:nil];
                //<3>获取title数据
                for (GDataXMLElement * element in elements) {
                    //获取节点的内容
                    NSLog(@"title:%@",element.stringValue);
                    }
            }
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        }];
    }
拓展---------------------------------------------------------------
      //------------拓展  ------判断当前网络状态
        /*
         AFNetworkReachabilityStatusNotReachable     = 0,
         AFNetworkReachabilityStatusReachableViaWWAN = 1,
         AFNetworkReachabilityStatusReachableViaWiFi = 2,
         };
         */
        [manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
            if (status == AFNetworkReachabilityStatusReachableViaWiFi)
            {
                NSLog(@"WIFI");
            }
            else if (status == AFNetworkReachabilityStatusReachableViaWWAN)
            {
                NSLog(@"3G/GPRS");
            }
            else
            {
                NSLog(@"无网络状态");
            }
            
        }];

 

 
 

AFNetWorking进行网络请求

标签:

原文地址:http://www.cnblogs.com/huoxingdeguoguo/p/4602043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!