`
百合不是茶
  • 浏览: 355841 次
社区版块
存档分类
最新评论

HTTP请求和JSON解析与组装

阅读更多

json和xml在开发中回经常使用到,上次问同事ios设计到xml的请求是否存在,问答是快被淘汰了,xml在android的使用也很少

 

解析本地json文件

 

{
    "settingView":"showContent",
    "mainViewModelData": [
                          {
                          "contenttitle": "地图",
                          "contentPage": "",
                          "state": "1"
                          },
                          {
                          "contenttitle": "语音搜索",
                          "contentPage": "",
                          "state": "1"
                          },
                          {
                          "contenttitle": "推送消息",
                          "contentPage": "",
                          "state": "1"
                          },
                          {
                          "contenttitle": "二维码",
                          "contentPage": "",
                          "state": "1"
                          },
                          {
                          "contenttitle": "图片加载",
                          "contentPage": "",
                          "state": "1"
                          },
                          {
                          "contenttitle": "蓝牙",
                          "contentPage": "",
                          "state": "1"
                          },
                          {
                          "contenttitle": "NFC",
                          "contentPage": "",
                          "state": "1"
                          },
                          {
                          "contenttitle": "声纹",
                          "contentPage": "",
                          "state": "1"
                          },
                          {
                          "contenttitle": "脸部识别",
                          "contentPage": "",
                          "state": "1"
                          },
                          {
                          "contenttitle": "视频图片",
                          "contentPage": "",
                          "state": "1"
                          }
                          ]
}

 

 

解析;

 

#pragma mark--json解析类
-(NSDictionary *)getJSONToString{
    
    NSData *dataJSON=[NSData dataWithContentsOfFile:[[NSBundle mainBundle]pathForResource:main_json ofType:main_type]];

    NSDictionary *dictionary=[NSJSONSerialization JSONObjectWithData:dataJSON options:0 error:nil];

    return dictionary;
}

 

 

 //SettingViewBean自定义的model存储解析的数据
 NSMutableArray *data=[[NSMutableArray alloc]init];
        
        NSDictionary *dic =[self getJSONToString];
        id dicArray=dic[@"mainViewModelData"];
        for (id dic in dicArray) {
            if ([@"1" isEqualToString:dic[@"state"]]) {
                SettingViewBean *svb=[[SettingViewBean alloc]initWith:dic[@"contenttitle"] andContentPage:dic[@"contentPage"]];
                [data addObject:svb];
                [svb release];
            }
        }

解析结果:

2016-03-20 18:02:14.195 UIControlStart[923:53112] showContent=地图,contentPage=

2016-03-20 18:02:14.196 UIControlStart[923:53112] showContent=语音搜索,contentPage=

2016-03-20 18:02:14.197 UIControlStart[923:53112] showContent=推送消息,contentPage=

2016-03-20 18:02:14.197 UIControlStart[923:53112] showContent=二维码,contentPage=

2016-03-20 18:02:14.198 UIControlStart[923:53112] showContent=图片加载,contentPage=

2016-03-20 18:02:14.198 UIControlStart[923:53112] showContent=蓝牙,contentPage=

2016-03-20 18:02:14.198 UIControlStart[923:53112] showContent=NFC,contentPage=

2016-03-20 18:02:14.199 UIControlStart[923:53112] showContent=声纹,contentPage=

2016-03-20 18:02:14.200 UIControlStart[923:53112] showContent=脸部识别,contentPage=

2016-03-20 18:02:14.201 UIControlStart[923:53112] showContent=视频图片,contentPage= 

 

 

 

URLConnection请求数据

 

Commom *comom=[[Commom alloc]init];
    NSMutableDictionary *dictionary=[[NSMutableDictionary alloc]init];
    [dictionary setObject:@"苏州市" forKey:@"a"];
    //http://gc.ditu.aliyun.com/geocoding?a=苏州市
    [comom commomRequestPOSTURLAndParams:@"http://gc.ditu.aliyun.com/geocoding" andRequestParams:(NSMutableDictionary *) dictionary];


#pragma mark--//post请求网络
-(void)commomRequestPOSTURLAndParams:(NSString*)url andRequestParams:(NSMutableDictionary*)parmas{
    
    __block NSData *dataParms;
    
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        
        dispatch_async(dispatch_get_main_queue(), ^{
            
                if ([parmas count]!=0) {//判断是否存在参数
            
                    dataParms= [NSJSONSerialization dataWithJSONObject:parmas options:NSJSONWritingPrettyPrinted error:nil];
                    NSLog(@"dataParms = %@,str = %@",dataParms,[[NSString alloc] initWithData:dataParms encoding:NSUTF8StringEncoding]);
            
                }
            
            NSURL *requestAddress= [[NSURL alloc] initWithString:url];
            
            NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:requestAddress];
            request.HTTPMethod=@"POST";
            //此处发送一定要设置,这个地方把字典封装为json格式
            //                [request setValue:@"application/jason" forHTTPHeaderField:@"Content-Type"];
            request.HTTPBody=dataParms;
            
            [request setValue:@"applocation/json" forHTTPHeaderField:@"Content-Type"];
            NSOperationQueue *queue = [[NSOperationQueue alloc] init];
            [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
                NSLog(@"%@ \n -----> %@",data,[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
                
                NSLog(@"%@",connectionError);
                
                NSLog(@"fdlkasl");
                
            }];
            
        });
    });
}

 

 

 

 

3,NSURLSession POST

 //请求网络
    Commom *comom=[[Commom alloc]init];
    NSMutableDictionary *dictionary=[[NSMutableDictionary alloc]init];
    [dictionary setObject:@"苏州市" forKey:@"a"];
    //http://gc.ditu.aliyun.com/geocoding?a=苏州市
    [comom commomRequestPOSTURLAndParams:@"http://gc.ditu.aliyun.com/geocoding" andRequestParams:(NSMutableDictionary *) dictionary];


#pragma mark--//post请求网络
-(void)commomRequestPOSTURLAndParams:(NSString*)url andRequestParams:(NSMutableDictionary*)parmas{
//      __block NSData *dataParms;
//        
//        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//            
//            dispatch_async(dispatch_get_main_queue(), ^{
//                
//                if ([parmas count]!=0) {//判断是否存在参数
//                    
//                    dataParms= [NSJSONSerialization dataWithJSONObject:parmas options:NSJSONWritingPrettyPrinted error:nil];
//                    NSLog(@"dataParms=%@",dataParms);
//                    
//                }
//                
//                NSURL *requestAddress= [[NSURL alloc]initWithString:url];
//                //创建Session对象
//                NSURLSession *session=[NSURLSession sharedSession];
//                
//                NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:requestAddress];
//                request.HTTPMethod=@"POST";
//                //此处发送一定要设置,这个地方把字典封装为json格式
//                //                [request setValue:@"application/jason" forHTTPHeaderField:@"Content-Type"];
//                [request setValue:@"applocation/json" forHTTPHeaderField:@"Content-Type"];
//                
//                request.HTTPBody=dataParms;
//                
//                NSURLSessionTask *sessionTask= [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//                    
//                    
//                    
//                    NSMutableDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
//                    
//                    NSLog(@"get请求数据=%@",dict);
//                    
//                }];
//                
//                
//                [sessionTask resume];
//                
//            });
//        });
    
    
    
    __block NSData *dataParms;
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        
        dispatch_async(dispatch_get_main_queue(), ^{
            
            
            if ([parmas count]!=0) {//判断是否存在参数
                
                dataParms= [NSJSONSerialization dataWithJSONObject:parmas options:NSJSONWritingPrettyPrinted error:nil];
                NSLog(@"dataParms=%@ ",[[NSString alloc] initWithData:dataParms encoding:NSUTF8StringEncoding]);
                
            }
            
            
            NSURL *requestAddress= [[NSURL alloc] initWithString:url];
            
            NSLog(@"%@",[NSString stringWithFormat:@"%@?a=%@",url,[parmas objectForKey:@"a"]]);
        
            //创建Session对象
            NSURLSession *session=[NSURLSession sharedSession];
            
            
            NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:requestAddress];
            request.HTTPMethod=@"POST";
            //此处发送一定要设置,这个地方把字典封装为json格式
            //                [request setValue:@"application/jason" forHTTPHeaderField:@"Content-Type"];
            [request setValue:@"applocation/json" forHTTPHeaderField:@"Content-Type"];
            
            request.HTTPBody=dataParms;
            
            NSURLSessionTask *sessionTask= [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
                
                
                NSMutableDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
                
                NSLog(@"post请求数据=%@",dict);
                NSLog(@"lat=%@",dict[@"lat"]);
                NSLog(@"lon=%@",dict[@"lon"]);
                
            }];
            
            
            [sessionTask resume];
            
        });
    });
    
    
}

  结果:

2016-03-20 18:02:18.200 UIControlStart[923:53294] post请求数据={

    address = "";

    alevel = 4;

    cityName = "";

    lat = "39.90403";

    level = "-1";

    lon = "116.40752";

}

2016-03-20 18:02:18.201 UIControlStart[923:53294] lat=39.90403

 

2016-03-20 18:02:18.201 UIControlStart[923:53294] lon=116.40752

 

 

 

 

 

 

 

 4,NSURLSession GET

    NSMutableDictionary *dictionary=[[NSMutableDictionary alloc]init];
    [dictionary setObject:@"苏州市" forKey:@"a"];
    http://gc.ditu.aliyun.com/geocoding?a=苏州市
    [comom commomRequestGETURLAndParams:@"http://mobile.weather.com.cn/data/forecast/101010100.html?_=1381891660081" andRequestParams:(NSMutableDictionary *) dictionary];



#pragma mark--//get请求网络
-(void)commomRequestGETURLAndParams:(NSString*)url andRequestParams:(NSMutableDictionary*)parmas{
    
    NSLog(@"parmas=%@",parmas);
    
//    __block NSData *dataParms;
    self = [super init];
    if (self) {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            
            dispatch_async(dispatch_get_main_queue(), ^{
                
                NSURLSession *session=[NSURLSession sharedSession];
                 NSURL *requestAddress= [[NSURL alloc]initWithString:url];
                
                NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:requestAddress];
                request.HTTPMethod=@"GET";
                
                NSURLSessionDataTask *dataTask=[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
                    
                    NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
                    
                    NSLog(@"get的数据=%@",dic);
                    
                    NSDictionary *dictc=dic[@"c"];
                    
                    NSLog(@"dictc 的c1=%@",dictc[@"c1"]);
                    
                }];
                
                [dataTask resume];
                
            });
            
        });
        
    }

}

 结果:

2016-03-20 18:07:22.172 UIControlStart[936:57551] get的数据={

    c =     {

        c1 = 101010100;

        c10 = 1;

        c11 = 010;

        c12 = 100000;

        c13 = "116.391";

        c14 = "39.904";

        c15 = 33;

        c16 = AZ9010;

        c17 = "+8";

        c2 = beijing;

        c3 = "\U5317\U4eac";

        c4 = beijing;

        c5 = "\U5317\U4eac";

        c6 = beijing;

        c7 = "\U5317\U4eac";

        c8 = china;

        c9 = "\U4e2d\U56fd";

    };

    f =     {

        f0 = 201310121100;

        f1 =         (

                        {

                fa = 01;

                fb = 03;

                fc = 10;

                fd = 5;

                fe = 0;

                ff = 0;

                fg = 0;

                fh = 0;

                fi = "06:21|17:40";

            },

                        {

                fa = 07;

                fb = 07;

                fc = 19;

                fd = 12;

                fe = 0;

                ff = 0;

                fg = 0;

                fh = 0;

                fi = "06:22|17:38";

            },

                        {

                fa = 02;

                fb = 00;

                fc = 15;

                fd = 5;

                fe = 8;

                ff = 8;

                fg = 3;

                fh = 1;

                fi = "06:23|17:37";

            },

                        {

                fa = 00;

                fb = 00;

                fc = 16;

                fd = 4;

                fe = 0;

                ff = 0;

                fg = 0;

                fh = 0;

                fi = "06:24|17:35";

            },

                        {

                fa = 00;

                fb = 00;

                fc = 18;

                fd = 7;

                fe = 0;

                ff = 0;

                fg = 0;

                fh = 0;

                fi = "06:25|17:34";

            },

                        {

                fa = 00;

                fb = 01;

                fc = 18;

                fd = 8;

                fe = 0;

                ff = 0;

                fg = 0;

                fh = 0;

                fi = "06:26|17:32";

            },

                        {

                fa = 01;

                fb = 01;

                fc = 16;

                fd = 6;

                fe = 0;

                ff = 0;

                fg = 0;

                fh = 0;

                fi = "06:27|17:31";

            }

        );

    };

}

 

2016-03-20 18:07:22.172 UIControlStart[936:57551] dictc c1=101010100

 

 

 

 

分享到:
评论

相关推荐

    自己实现的Json和简单HTTP请求(C++ Builder 平台)

    在C++中,实现JSON解析和生成通常涉及以下几个关键概念: 1. **JSON对象(JSONObject)**:表示为键值对的集合,键是字符串,值可以是任何JSON类型。在实现时,可能需要创建一个类来表示JSON对象,包含一个字符串到...

    json生成与解析示例

    总之,理解和掌握JSON的生成与解析对于Java和Android开发者至关重要。通过这两个库,我们可以轻松地在Java对象和JSON字符串之间进行转换,从而实现数据的存储、传输和交换。在实际项目中,务必注意错误处理,因为...

    AJAX和struts2传递JSON数组

    首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。在AJAX中,我们通常使用JSON来序列化数据,因为它的结构与JavaScript对象相似,可以直接被...

    pb操作json库

    通过调用`SatJson.dll`的相关方法,开发者可以将DataWindow、数组或Structure等对象转换成符合JSON规范的字符串,然后通过HTTP请求发送出去。 `test.exe`、`test.pbl`、`test.pbt`、`test.pbw`这些文件是Power...

    SSM框架搭建+mybatis自动生成+json传输对象+http请求

    总结来说,这个项目涵盖了Java Web开发的关键技术,包括Spring的依赖注入和事务管理,SpringMVC的Web层处理,MyBatis的数据库操作,以及JSON和HTTP请求的使用。通过集成这些技术,开发者可以快速构建出稳定、高效的...

    JXM.http文档

    本篇文章将重点解析JMX文件中的关键组件及其在处理JSON格式数据时的应用。 ### JMeter概述 Apache JMeter是一款开源的压力测试工具,主要用于进行Web应用的压力测试。它不仅可以用来测试静态和动态资源(例如静态...

    ssm+tiles框架,前后台传值与获取值(json)

    例如,使用jQuery的`$.getJSON()`或`$.ajax()`方法,可以方便地向服务器请求JSON数据,并在回调函数中处理返回的结果。 Tiles框架则负责页面的布局和组件的复用。它允许我们将页面拆分为多个片段(Tiles),每个...

    easyui-combobox、combotree后台数据数据组装与前台绑定实例

    总结来说,"easyui-combobox、combotree后台数据数据组装与前台绑定实例" 主要涉及两个部分:后端 C# 数据组装成 JSON 格式,以及前端使用 EasyUI 的 Combobox 和 Combotree 组件进行数据绑定。通过这样的方式,我们...

    spring+springMVC+iBatis+Json整合所需jar包

    4. **Json整合**:Json(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在SpringMVC中,可以使用Jackson或Gson库将Java对象转换为Json格式,方便前后端的...

    Struts2 Tiles JSON jQuery Convention

    前端使用jQuery监听用户事件,发送Ajax请求到Action,接收到JSON数据后解析并更新由Tiles构建的页面部分。这种方式既保留了后台的结构化和灵活性,也确保了前端的交互性和用户体验。 总的来说,"Struts2 Tiles JSON...

    javascript巧用eval函数组装表单输入项为json对象的方法.docx

    在Web开发中,尤其是在使用Ajax进行前后端交互时,经常需要将表单中的输入项收集起来并转换为JSON对象,以便于通过HTTP请求(如POST)发送至服务器端进行处理。传统方法是通过手动编写代码来获取每个输入字段的值,...

    Python爬取数据保存为Json格式的代码示例

    在给出的代码示例中,可以看到导入了`urllib.request`用于发送HTTP请求,`BeautifulSoup`用于解析HTML文档,`os`用于操作文件系统,`time`用于获取当前时间,`codecs`用于处理编码问题,以及`json`用于处理JSON数据...

    【IT十八掌徐培成】Java基础第19天_04_解析消息_解析后将消息重新封装发送给客户端.zip

    Java提供了一些库来帮助解析这些格式,如Jackson库用于JSON解析,而Java内置的JAXB库可以用于XML的编解码。 在解析后重新封装消息,可能涉及到了对象的序列化和反序列化。Java的序列化机制允许将对象的状态转化为...

    基于jstree使用JSON数据组装成树

    首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在jstree中使用JSON数据构建树形结构,使得数据结构层次分明,同时便于前后端分离开发模式,...

    zTree后台组装树结构java代码

    - zTree通过解析JSON数据,动态渲染出树形结构。 以上就是关于"zTree后台组装树结构java代码"的主题知识,包括了zTree的使用、Java与MySQL的交互、递归算法构建树、Spring JDBC等内容。理解并掌握这些知识点,能够...

    易语言源码易语言取淘宝订单模块源码.rar

    4. 解析响应:接收服务器返回的数据,并使用易语言的字符串处理和JSON解析功能,将数据解析成易语言能处理的对象。 5. 处理数据:根据解析出的订单信息,进行进一步的业务逻辑处理,如存储到数据库、显示在界面等。 ...

    JSONObject完整jar包

    总结来说,`JSONObject`是Java处理JSON数据的强大工具,无论是在构建HTTP请求响应、存储配置信息还是与其他系统交换数据等方面,都有广泛的应用。这个“JSONObject完整jar包”提供了完整的功能,可以帮助开发者轻松...

    HTTP Get POST 分析工具(c# 源代码)

    此外,对于想要深入爬虫开发的开发者,了解HTML解析库(如HtmlAgilityPack)和JSON处理(如Newtonsoft.Json)也很重要,因为它们可以帮助解析和操作从服务器获取的数据。 总的来说,这份"HTTP Get POST 分析工具(c#...

    精讲RestTemplate,POST请求方法使用详解.docx

    通过以上详细解析,我们可以清楚地了解到如何使用 RestTemplate 的 `postForObject` 和 `postForEntity` 方法发送 POST 请求,并且了解了它们之间的区别及其应用场景。这对于开发基于 RESTful Web 服务的应用非常有...

    易语言post例子

    易语言是一种专为中国人设计的编程语言,它以简体中文作为编程语法,降低了编程的门槛,使得更多非计算机专业的人也能...通过学习和模仿这个例子,你可以逐步掌握如何在实际项目中使用POST请求与服务器进行数据交互。

Global site tag (gtag.js) - Google Analytics