http协议 get/post 请求 解析XML

hxb2016 2018-11-27 原文

http协议 get/post 请求 解析XML

当你拿到一个接口文档,要确定是协议接口。eg:HTTP协议 、WebService接口。

HTTP协议  URL为“http:”,这代表网页使用的是HTTP协议。

Get请求

        // 根据地址获取请        
     HttpGet get = new HttpGet(getUrl);//这里发送get// 获取当前客户端对象
     HttpClient httpClient = new DefaultHttpClient(); String status = null; // 请求返回状态码 String reason = null; // 返回原因 String exchangeResult = null; try { // 通过请求对象获取响应对象 HttpResponse response = httpClient.execute(get); System.out.println("请求状态码:【" + response.getStatusLine().getStatusCode() + "】"); // 判断网络连接状态码是否正常(0--200都数正常) if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
          /**       
            
<result>    
              <Return Status="Success" Reason="" />
            </result>
  
            -- response.getEntity, 但当 exchangeResult 接收时为:<result>&ltReturn Status="Success" Reason="" /&gt</result> 
          **/
                exchangeResult = EntityUtils.toString(response.getEntity(),"utf-8");
                exchangeResult = exchangeResult.replaceAll("&lt;", "<").replaceAll("&gt;", ">"); // xml数据返回含有特殊字符,这里只考虑了 < 和 > 号
                Document doc = DocumentHelper.parseText(exchangeResult);  
                Element root = doc.getRootElement(); // Element DOM
                Iterator<Element> iter = root.elementIterator(); 
                while(iter.hasNext()){
                    Element tmpElement = (Element) iter.next(); // Return 节点
                    status = tmpElement.attributeValue("Status"); // Success
                    reason = tmpElement.attributeValue("Reason"); 
                }
                System.out.println("get获取结果返回--status:【" + status + "】reason:【" +reason + "】");
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

Post请求

  post请求一般用来推送数据,用多人会有疑问,要怎么样构造自己想要的xml eg: ![CDATA[{字段值}]]

  

Element root = DocumentHelper.createElement("Root");
Element entity = root.addElement("Entity").addAttribute("EntityName", "book").addAttribute("remark", "false");
entity.addElement("Property").addAttribute("Name", "num").addCDATA("123");
String xmlInfo = "<?xml version='1.0' encoding='utf-8'?>" + root.asXML();

结果:
  <?xml version='1.0' encoding='utf-8'?>
    <Root>
       <Entity EntityName='book' remark='false' > 
        <Property Name='num'><![CDATA[123
]]></Property>
       </Entity>
    </Root>

 

     String data = postData.toString(); // xml 数据
        HttpClient httpclient = new HttpClient();
        PostMethod post = new PostMethod(postUrl);
        String exchangeResult = null;
        try {
            RequestEntity entity = new StringRequestEntity(data, "text/plain","utf-8");
            post.setRequestEntity(entity);
            httpclient.executeMethod(post); // post 请求
            int code = post.getStatusCode();
            if (code == HttpStatus.SC_OK){
                
            }
        // 解析上同 exchangeResult
= new String(post.getResponseBodyAsString()); //接口返回的信息 exchangeResult = exchangeResult.replaceAll("&lt;", "<").replaceAll("&gt;", ">"); Document doc = DocumentHelper.parseText(exchangeResult); Element root = doc.getRootElement(); Iterator<Element> iter = root.elementIterator(); String status = null; String reason = null; while(iter.hasNext()){ Element tmpElement = (Element) iter.next(); status = tmpElement.attributeValue("Status"); reason = tmpElement.attributeValue("Reason"); } System.out.println("市接口推送过程数据结果:status:【" + status +"】,reason:【" + reason + "】"); } catch (Exception ex) { ex.printStackTrace(); } finally { post.releaseConnection(); }

有些人会有疑问为什么不转为json来解析数据,但看我们红色的xml数据,我们请求的时,返回的是String xml格式数据,但json强调的是 getString(“Status“) 返回一个text值,并不是参数属性值。eg:<property name=’status’>Success</property> ,

当这个情况时转为json会取得status。

发表于 2018-11-27 16:43 BigBoy520 阅读() 评论() 编辑 收藏

 

版权声明:本文为hxb2016原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hxb2016/p/10026617.html

http协议 get/post 请求 解析XML的更多相关文章

随机推荐

  1. 【杂谈】Disruptor——RingBuffer问题整理(一)

    纯CAS为啥比加锁要快? 同样是修改数据,一个采用加锁的方式保证原子性,一个采用CAS的方式保证原子性。 都是 […]...

  2. MDK 出现#68-D: integer conversion resulted in a change of sign

    .在KeilARM的LPCARM,存在(1<<31)编译警告问题main.c(174): warn […]...

  3. Spring中重要的注解

    现在大部分的Spring项目都会用到注解。使用注解来替换xml,一行简单的注解就可以解决很多事情。但是你真的懂 […]...

  4. 什么是回调函数?

    我们绕点远路来回答这个问题。 编程分为两类:系统编程(system programming)和应用编程(app […]...

  5. css涂鸦这样玩

    前言 上一次深扒CSS的时候,还说CSS和H5绘制复杂图形很麻烦,看了大神的操作后,感觉茅塞顿开了,哈哈。 就 […]...

  6. 交换机常用命令

    0.登陆交换机telnet ip 1.查看sn号 dis ela 2.查看目前与交换机互联的设备(up为端亮) […]...

  7. 微信小程序的登录与授权 – chmily陈

    微信小程序的登录与授权 微信小程序的登录与授权 官方文档:https://developers.weixin. […]...

  8. Markdown基础语法

    注意: Markdown语法符号前加\’\\’可以表示该符号仅为字符,不会被识别为Ma […]...

展开目录

目录导航