zoukankan      html  css  js  c++  java
  • iOS开发-使用第三方库AFNetWorking解析JSON和XML数据

    利用第三方库AFNetWorking解析网络请求的JSON和MXL数据具有很多方便的地方。

    第三方库的下载地址:https://github.com/AFNetworking/AFNetworking

    导入的包和宏定义

     1 #import "ViewController.h"
     2 #import "AFNetworking.h"
     3 #import "GDataXMLNode.h"
     4 
     5 //json地址
     6 #define kJSONUrlString @"http://iappfree.candou.com:8080/free/applications/limited?currency=rmb&page=1"
     7 
     8 //xml的地址
     9 #define kXMLUrlString @"http://wiapi.hexun.com/news/getlist4.0.php?pid=100234721&pc=20&pn=1&st=0"
    10 
    11 //json Post提交方式
    12 #define kJsonPostUrlString @"http://api2.dfc.cn/sjll/v1/homes/basic_data"
    13 
    14 //xml Post提交方式
    15 #define kXMLPostUrlString @""

    1.对JSON Get方式的请求方式

     1 //对JSON Get方式的请求方式
     2 - (void)jsonGetRequest
     3 {
     4     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
     5     manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"];
     6     [manager GET:kJSONUrlString parameters:nil success:^(AFHTTPRequestOperation *operation,id responseObject){
     7         if ([responseObject isKindOfClass:[NSData class]]) {
     8             NSLog(@"responseObjectData = %@",responseObject);
     9         }
    10         else if ([responseObject isKindOfClass:[NSDictionary class]])
    11         {
    12             NSLog(@"responseObjectDict = %@",responseObject);
    13         }
    14     } failure:^(AFHTTPRequestOperation *operation,NSError *error){
    15         
    16     }];
    17     //获取队列中有多少个请求
    18     NSInteger count = manager.operationQueue.operationCount;
    19     NSLog(@"count = %ld",count);
    20     //取消队列中所有的请求
    21     [manager.operationQueue cancelAllOperations];
    22 }

    2.对XML 的Get方式的请求方式

    这里还使用了由Google提供的一个第三方库GData对Xml文件的解析,github下载地址:https://github.com/graetzer/GDataXML-HTML

    //错误:3840  ---就是表示服务器段的数据不是严格的按照xml的格式书写的
    //xml解析
    - (void)xmlGetRequest
    {
        AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
        //manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/xml"];
        //自己生成一个响应的序列化对象,不使用系统给的方式
        manager.responseSerializer = [[AFHTTPResponseSerializer alloc] init];
        [manager GET:kXMLUrlString parameters:nil success:^(AFHTTPRequestOperation *operation,id responseObject){
            
            GDataXMLDocument *doc=[[GDataXMLDocument alloc] initWithData:responseObject encoding:NSUTF8StringEncoding error:nil];
            NSString *path = @"/doc/focus/frame/title";
            NSArray *titles=[doc nodesForXPath:path error:nil];
            for (GDataXMLElement *title in titles) {
                NSLog(@"%@",title.stringValue);
            }
            //NSLog(@"requestObject = %@",responseObject);
        
        } failure:^(AFHTTPRequestOperation *operation,NSError *error){
        
            NSLog(@"error = %@",error);
            
        }];
    }

    3.对JSON 的POST的请求方式

    //post请求数据操作JSON数据
    - (void)jsonPostRequest:(NSDictionary *)dict
    {
        //单例对象
        AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
        manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"];
        [manager POST:kJsonPostUrlString parameters:dict success:^(AFHTTPRequestOperation *operation,id responseObject){
            NSLog(@"responseObject = %@",responseObject);
            
        } failure:^(AFHTTPRequestOperation *operation,NSError *error){
        
            NSLog(@"error = %@",error);
            
        }];
    }

    4.对XML的Post方式请求方式

     1 //post方式请求xml数据
     2 - (void)xmlPostRequest:(NSDictionary *)dict
     3 {
     4     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
     5     //manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/xml"];
     6     //使用自己创建的对象取解析xml
     7     manager.responseSerializer = [AFHTTPResponseSerializer alloc];
     8     [manager POST:kXMLPostUrlString parameters:dict success:^(AFHTTPRequestOperation *operation,id responseObject){
     9         
    10         NSLog(@"responseObject = %@",responseObject);
    11     
    12     } failure:^(AFHTTPRequestOperation *operation,NSError *error){
    13         
    14         NSLog(@"error = %@",error);
    15     
    16     }];
    17 }

      

  • 相关阅读:
    23、Django实战第23天:视频播放页面
    22、Django实战第22天:课程评论
    21、Django实战第21天:课程章节信息
    20、Django实战第20天:课程详情页
    19、Django实战第19天:课程列表页
    Tomcat 的 catalina.out 日志分割
    18、Django实战第18天:课程机构收藏功能
    17、Django实战第17天:机构详情展示
    16、Django实战第16天:优化url
    15、Django实战第15天:我要学习咨询
  • 原文地址:https://www.cnblogs.com/BeyondAverage0908/p/4665540.html
Copyright © 2011-2022 走看看