`
wbj0110
  • 浏览: 1629970 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

http请求返回并解析json数据

    博客分类:
  • Java
阅读更多
Java代码  收藏代码
  1. /*   注意get和post请求的发送区别 
  2.  * 1、创建HttpGet(或HttpPost)对象,将要请求的URL通过构造方法传入HttpGet(或HttpPost)对象中; 
  3.    2、使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST 请求,并返回HttpResponse对象; 
  4.    3、通过HttpResponse接口的getEntity方法返回响应信息。 
  5.  * */  
  6.   
  7. public class TestHttpActivity extends Activity {  
  8.   private Button btn_get;  
  9.   private Button btn_post;  
  10.     @Override  
  11.     public void onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.         setContentView(R.layout.main);  
  14.         btn_get=(Button)findViewById(R.id.btn_get);  
  15.         btn_post=(Button)findViewById(R.id.btn_post);  
  16.         btn_get.setOnClickListener(listener);  
  17.         btn_post.setOnClickListener(listener);  
  18.     }  
  19.     private OnClickListener listener=new OnClickListener() {  
  20.           
  21.         @Override  
  22.         public void onClick(View v) {  
  23.             switch (v.getId()) {  
  24.             case R.id.btn_post:  
  25.                 Log.i("TestHttpActivity""ok");  
  26.                  DefaultHttpClient client = new DefaultHttpClient();   
  27.                  /**NameValuePair是传送给服务器的请求参数    param.get("name") **/  
  28.                  List<NameValuePair> list = new ArrayList<NameValuePair>();    
  29.                  NameValuePair pair1 = new BasicNameValuePair("name""name0001");    
  30.                  NameValuePair pair2 = new BasicNameValuePair("age""age0001");    
  31.                  list.add(pair1);    
  32.                  list.add(pair2);    
  33.                  UrlEncodedFormEntity entity=null;  
  34.                 try {  
  35.                     /**设置编码 **/  
  36.                     entity = new UrlEncodedFormEntity(list,"UTF-8");  
  37.                 } catch (UnsupportedEncodingException e) {  
  38.                     // TODO Auto-generated catch block  
  39.                     e.printStackTrace();  
  40.                 }    
  41.                 /**新建一个post请求**/  
  42.                  HttpPost post = new HttpPost("http://aaron-pc.wsd.com/Test/testHttp");    
  43.                  post.setEntity(entity);    
  44.                  HttpResponse response=null;  
  45.                  String strResult="";  
  46.                 try {  
  47.                     /**客服端向服务器发送请求**/  
  48.                     response = client.execute(post);  
  49.                 } catch (ClientProtocolException e) {  
  50.                     // TODO Auto-generated catch block  
  51.                     e.printStackTrace();  
  52.                 } catch (IOException e) {  
  53.                     // TODO Auto-generated catch block  
  54.                     e.printStackTrace();  
  55.                 }    
  56.                    /**请求发送成功,并得到响应**/  
  57.                  if(response.getStatusLine().getStatusCode()==200){    
  58.                     try {  
  59.                           /**读取服务器返回过来的json字符串数据**/  
  60.                            strResult = EntityUtils.toString(response.getEntity());     
  61.                     } catch (IllegalStateException e) {  
  62.                         // TODO Auto-generated catch block  
  63.                         e.printStackTrace();  
  64.                     } catch (IOException e) {  
  65.                         // TODO Auto-generated catch block  
  66.                         e.printStackTrace();  
  67.                     }  
  68.                       
  69.               
  70.                      JSONObject jsonObject = null;  
  71.                     try {  
  72.                         /**把json字符串转换成json对象**/  
  73.                         jsonObject = getJSON(strResult);  
  74.                     } catch (JSONException e1) {  
  75.                         // TODO Auto-generated catch block  
  76.                         e1.printStackTrace();  
  77.                     }  
  78.                      String names="";  
  79.                       
  80.                      try {  
  81.                          /** 
  82.                           * jsonObject.getString("code") 取出code 
  83.                           * 比如这里返回的json 字符串为 [code:0,msg:"ok",data:[list:{"name":1},{"name":2}]] 
  84.                           * **/  
  85.                            
  86.                          /**得到data这个key**/  
  87.                          String data=jsonObject.getString("data");  
  88.                          /**把data下的数据转换成json对象**/  
  89.                          JSONObject jDat = new JSONObject(data);  
  90.                          /**判断data对象下的list是否存在**/  
  91.                          if(jDat.get("list")!=null){  
  92.                              /**把list转换成jsonArray对象**/  
  93.                              JSONArray jarr = jDat.getJSONArray("list");  
  94.                              /**循环list对象**/  
  95.                          for (int i = 0; i < jarr.length(); i++) {  
  96.                                
  97.                              /** **/  
  98.                              JSONObject jsono = (JSONObject) jarr.get(i);   
  99.                                
  100.                              /**取出list下的name的值 **/  
  101.                              names=names+jsono.getString("name");  
  102.                                
  103.                         }  
  104.                          }  
  105.                         Toast.makeText(TestHttpActivity.this"code:"+jsonObject.getString("code")+"name:"+names, Toast.LENGTH_SHORT).show();  
  106.                     } catch (JSONException e) {  
  107.                         // TODO Auto-generated catch block  
  108.                         e.printStackTrace();  
  109.                     }    
  110.                          
  111.                          
  112.                  }    
  113.                  else Toast.makeText(TestHttpActivity.this"POST提交失败", Toast.LENGTH_SHORT).show();    
  114.                 break;  
  115.   
  116.             case R.id.btn_get:  
  117.                  DefaultHttpClient client1 = new DefaultHttpClient();   
  118.                  /**NameValuePair是传送给服务器的请求参数    param.get("name") **/  
  119.                  
  120.                  UrlEncodedFormEntity entity1=null;  
  121.                
  122.                 /**新建一个get请求**/  
  123.                  HttpGet get = new HttpGet("http://aaron-pc.wsd.com/Test/testHttp");    
  124.                  HttpResponse response1=null;  
  125.                  String strResult1="";  
  126.                 try {  
  127.                     /**客服端向服务器发送请求**/  
  128.                     response1 = client1.execute(get);  
  129.                 } catch (ClientProtocolException e) {  
  130.                     // TODO Auto-generated catch block  
  131.                     e.printStackTrace();  
  132.                 } catch (IOException e) {  
  133.                     // TODO Auto-generated catch block  
  134.                     e.printStackTrace();  
  135.                 }    
  136.                    /**请求发送成功,并得到响应**/  
  137.                  if(response1.getStatusLine().getStatusCode()==200){    
  138.                     try {  
  139.                           /**读取服务器返回过来的json字符串数据**/  
  140.                            strResult1 = EntityUtils.toString(response1.getEntity());     
  141.                     } catch (IllegalStateException e) {  
  142.                         // TODO Auto-generated catch block  
  143.                         e.printStackTrace();  
  144.                     } catch (IOException e) {  
  145.                         // TODO Auto-generated catch block  
  146.                         e.printStackTrace();  
  147.                     }  
  148.                       
  149.               
  150.                      JSONObject jsonObject1 = null;  
  151.                     try {  
  152.                         /**把json字符串转换成json对象**/  
  153.                         jsonObject1 = getJSON(strResult1);  
  154.                     } catch (JSONException e1) {  
  155.                         // TODO Auto-generated catch block  
  156.                         e1.printStackTrace();  
  157.                     }  
  158.                      String names="";  
  159.                       
  160.                      try {  
  161.                          /** 
  162.                           * jsonObject.getString("code") 取出code 
  163.                           * 比如这里返回的json 字符串为 [code:0,msg:"ok",data:[list:{"name":1},{"name":2}]] 
  164.                           * **/  
  165.                            
  166.                          /**得到data这个key**/  
  167.                          String data=jsonObject1.getString("data");  
  168.                          /**把data下的数据转换成json对象**/  
  169.                          JSONObject jDat1 = new JSONObject(data);  
  170.                          /**判断data对象下的list是否存在**/  
  171.                          if(jDat1.get("list")!=null){  
  172.                              /**把list转换成jsonArray对象**/  
  173.                              JSONArray jarr1 = jDat1.getJSONArray("list");  
  174.                              /**循环list对象**/  
  175.                          for (int i = 0; i < jarr1.length(); i++) {  
  176.                                
  177.                              /** **/  
  178.                              JSONObject jsono = (JSONObject) jarr1.get(i);   
  179.                                
  180.                              /**取出list下的name的值 **/  
  181.                              names=names+jsono.getString("name");  
  182.                                
  183.                         }  
  184.                          }  
  185.                         Toast.makeText(TestHttpActivity.this,  "get请求: code:"+jsonObject1.getString("code")+"name:"+names, Toast.LENGTH_SHORT).show();  
  186.                     } catch (JSONException e) {  
  187.                         // TODO Auto-generated catch block  
  188.                         e.printStackTrace();  
  189.                     }    
  190.                          
  191.                          
  192.                  }    
  193.                  else Toast.makeText(TestHttpActivity.this"get提交失败", Toast.LENGTH_SHORT).show();    
  194.                 break;  
  195.             }  
  196.               
  197.         }  
  198.     };  
  199.     public JSONObject getJSON(String sb) throws JSONException {    
  200.         return new JSONObject(sb);    
  201.     }   
  202.    
  203. }  
  204.  
     

http://284772894.iteye.com/blog/1744114

分享到:
评论

相关推荐

    li_3ck_02a_1118.pdf

    li_3ck_02a_1118

    基于MATLAB的牛顿迭代法实现

    基于MATLAB的牛顿迭代法实现

    mellitz_3ck_01_0319.pdf

    mellitz_3ck_01_0319

    2025探索银行业人工智能驱动技术转型的投资回报率

    内容概要:文章阐述了银行采用人工智能(AI)技术替代传统系统的紧迫性和收益,讨论了通过构建现代化的数据和技术平台实现效率提升的方法,同时强调实施过程中确保数据质量和建立信任的重要性。文中提及,在金融行业中,若想优化业绩则必须拥抱AI带来的机遇,并为此进行经营模式的革新。根据Workday主办的研讨会内容,PwC金融服务风险与监管领导和Workday金融服务高层指出了大部分银行对AI认知不足的问题,强调AI在金融、人力资源以及IT等领域的广泛应用潜力及具体应用场景,如欺诈检测、技能映射和财务管理方面的作用。并且提到了AI部署过程中可能出现的技术与非技术难题及相应解决办法,鼓励金融机构及时投资建设新型基础设施,以保持竞争力。 适用人群:银行及其他金融机构管理人员;金融科技领域的专业研究人员;对企业数字化和智能化转型感兴趣的商业分析师、投资者;从事信息技术咨询工作的顾问。 使用场景及目标:本文可以帮助金融机构制定合理的技术发展战略规划,评估是否有必要推进AI技术转型,同时也为希望涉足银行科技项目的开发者提供了宝贵的市场洞察,帮助理解行业内普遍存在的困难与潜在的市场需求。此外,对于想要了解银行

    matlab程序代码项目案例论文+程序 基于在线优化的快速模型预测控制Fast model predicitive control with matlab interface.zip

    matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    [AB PLC例程源码][MMS_043071]Phase Manager and a Scalable Batching Solution.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    [AB PLC例程源码][MMS_044386]1769-SM2 Compact I-O to DSI Module - Multi Drive Mode Operation - with.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    [AB PLC例程源码][MMS_041232]Monitor I-O Connections in Logix.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    chromedriver-linux64-136.0.7058.0.zip

    chromedriver-linux64-136.0.7058.0.zip

    [AB PLC例程源码][MMS_042504]Logix5000 interface to Atlas-Copco Tool Controller over EtherNet-IP.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    [AB PLC例程源码][MMS_042349]How to read-write data to-from a PLC using OPC in Visual Basic 6.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    电力工程领域中背压热电联产电厂的设计与参数计算

    内容概要:本文档介绍了背压热电联产(CHP)发电厂的详细设计步骤,涵盖确定各状态点的压力、温度、比焓以及质量流率的具体方法。主要内容围绕计算净电功率、燃料消耗及其效率展开,并提供了T-s图绘制的指南。针对每个组件(如蒸汽轮机、冷凝器、除氧器等),都列出了详细的效率假设和压力损失表,为实际工程应用提供了宝贵的参考资料和操作指导。同时,该作业任务要求学生从给定初始值中选择合适的操作条件进行系统模拟,并利用课程讲义和Moodle平台资料完成计算流程。 适用人群:对能源转换和动力设备设计感兴趣的学生或者初涉该领域的工程师。 使用场景及目标:旨在帮助学员深入了解并掌握背压热电联产装置的工作原理和技术指标计算的方法论,通过实践练习提高他们的问题解决能力。 其他说明:文档强调了稳态运行假设的重要性,即物质平衡等于能量输入等于输出的原则,并鼓励参与者借助附录提供的典型操作参数图表来寻找解决问题的方向。此外,它还特别指出对于一些变量值求解可能需要迭代法来进行调整,直至获得稳定结果。提交的报告必须含有一份详细的T-s图和其他必要附件。

    机器学习-市财政收入分析(含数据集)

    机器学习_市财政收入分析(含数据集)

    [AB PLC例程源码][MMS_046989]KAT with Code Sequencer.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    tracy_3cd_01_0318.pdf

    tracy_3cd_01_0318

    lusted_3cd_01_0918.pdf

    lusted_3cd_01_0918

    基于51的自动分拣系统设计20250307

    题目:基于51的自动分拣系统设计 主控:AT89C52 测距模块:超声波测距模块 甲醛传感器(ADC0832+滑动变阻器模拟) 粉尘传感器(PCF8591+滑动变阻器模拟) 净化模块(继电器驱动蓝灯) 排风模块(继电器驱动绿灯) 电源电路(5V降压为3.3V供电) 显示模块(LCD1602) 声光报警 按键(3个,切换阈值选择,阈值加减) 检测物体:开关模拟 电机驱动模块(继电器驱动直流电机转动) 功能: 1.显示屏显示甲醛,粉尘浓度可以切换设置阈值。 2.通过甲醛传感器检测车间环境,大于阈值时声光报警并启动净化模块。 3.通过粉尘传感器检测车间环境,大于阈值时声光报警并启动排风模块。 4.采用超声波传感器进行物体超高监测异常(大于XX距离)时触发声光报警 5.检测到物体(开关闭合)直流电机转动(模拟传送带)

    network-server

    network_server

    [AB PLC例程源码][MMS_046691]Integrated Architecture Foundations of Modular Programming.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    sun_01_0308.pdf

    sun_01_0308

Global site tag (gtag.js) - Google Analytics