zoukankan      html  css  js  c++  java
  • AFNetWorking进行GET网络请求

    //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(@"无网络状态");
                }
                
            }];
     
     
     
  • 相关阅读:
    类和接口对比
    concurrenthasmap
    java中的三大注解
    基本数据类型,注意首字母
    常见ascii码记忆
    Java软件工程师面试题:Java运行时异常与一般异常有什么不一样?
    &和&&的共同点和区别、Java字符含义和Java创建对象的几种方式
    Java面试题中常考的容易混淆的知识点区别
    Java面试题整理:这些Java程序员面试中经常遇见的题目,必须掌握才能有好结果
    Spring Cloud 微服务架构的五脏六腑,统统晒一晒!
  • 原文地址:https://www.cnblogs.com/huoxingdeguoguo/p/4602043.html
Copyright © 2011-2022 走看看