• 微信消息处理JAXP-dom解析


      1 package cn.lihainan.test;
      2 import java.io.BufferedReader;
      3 import java.io.ByteArrayInputStream;
      4 import java.io.ByteArrayOutputStream;
      5 import java.io.FileInputStream;
      6 import java.io.IOException;
      7 import java.io.InputStream;
      8 import java.io.InputStreamReader;
      9 import java.io.PrintWriter;
     10 import java.text.SimpleDateFormat;
     11 
     12 import javax.servlet.ServletException;
     13 import javax.servlet.ServletRequest;
     14 import javax.servlet.http.HttpServlet;
     15 import javax.servlet.http.HttpServletRequest;
     16 import javax.servlet.http.HttpServletResponse;
     17 import javax.xml.parsers.DocumentBuilder;
     18 import javax.xml.parsers.DocumentBuilderFactory;
     19 import javax.xml.parsers.ParserConfigurationException;
     20 
     21 
     22 import org.dom4j.io.SAXReader;
     23 import org.dom4j.io.XMLWriter;
     24 
     25 import org.w3c.dom.Document;
     26 import org.w3c.dom.Node;
     27 
     28 
     29 public class Demo1 extends HttpServlet {
     30     public void doPost(HttpServletRequest request, HttpServletResponse response)
     31     throws ServletException, IOException { 
     32         try {    // 将请求、响应的编码均设置为UTF-8(防止中文乱码)
     33         request.setCharacterEncoding("utf-8");  
     34         response.setContentType("textml;charset=utf-8");
     35         InputStream inputStream = request.getInputStream();
     36         
     37 
     38 
     39         String result = readFromInputStream(inputStream);
     40         
     41         
     42         
     43         PrintWriter out = response.getWriter();
     44 
     45         out.println("原始消息:");
     46 
     47         out.println(result);
     48 
     49         //解析 建立document解析
     50         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
     51         DocumentBuilder builder;
     52         builder = factory.newDocumentBuilder();
     53         
     54         InputStream xmlStream = new ByteArrayInputStream(result.getBytes("UTF-8"));
     55         Document document =  builder.parse(xmlStream);
     56         //定义节点    根据节点从document中找到要输出的 
     57         Node ToUserName = document.getElementsByTagName("ToUserName").item(0);      
     58         System.out.println(ToUserName.getTextContent());
     59         
     60         Node FromUserName = document.getElementsByTagName("FromUserName").item(0);      
     61         System.out.println(FromUserName.getTextContent());
     62         
     63         Node MsgType= document.getElementsByTagName("MsgType").item(0);      
     64         System.out.println(MsgType.getTextContent());
     65         
     66         Node Content = document.getElementsByTagName("Content").item(0);      
     67         System.out.println(Content.getTextContent());
     68         
     69         Node MsgId= document.getElementsByTagName("MsgId").item(0);      
     70         System.out.println(MsgId.getTextContent());
     71         
     72         
     73         out.println();
     74         //输出
     75         out.println("解析结果:");
     76         out.print("FromUserName(来自):");
     77         out.println(FromUserName.getTextContent());
     78         out.print("ToUserName(发送至):");
     79         out.println(ToUserName.getTextContent());
     80         out.print("CreateTime(时间):");
     81         
     82         Node createTime= document.getElementsByTagName("CreateTime").item(0);
     83         int t = Integer.parseInt(createTime.getTextContent());
     84         SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
     85         out.println(format.format((long)t*1000L));
     86         out.print("MsgType(消息类型):");
     87         out.println(MsgType.getTextContent());
     88         out.print("Content(文本内容):");
     89         out.println(Content.getTextContent());
     90         out.print("MsgId(文件消息标识号):");
     91         out.println(MsgId.getTextContent());
     92         } catch (ParserConfigurationException e) {
     93         // TODO Auto-generated catch block
     94         e.printStackTrace();
     95         } catch (Exception e) {
     96         // TODO Auto-generated catch block
     97         e.printStackTrace();
     98         }
     99     }
    100     
    101     //将输入流InputStream变为String
    102     public String readFromInputStream(InputStream in) throws IOException {
    103         ByteArrayOutputStream baos = new ByteArrayOutputStream();
    104         byte[] buffer = new byte[1024];
    105         int len = -1;
    106         while ((len = in.read(buffer)) != -1) {
    107             baos.write(buffer, 0, len);
    108         }
    109         baos.close();
    110         in.close();
    111         // 解析内容     看网上更改 输出中文乱码  但是未解决  已知输入流为gbk  输出为utf-8  求如何转换
    112         byte[] lens = baos.toByteArray();
    113         String result = new String(lens,"UTF-8");
    114         
    115         return result;
    116     
    117     }
    118 }
  • 相关阅读:
    soap-学习
    Redis教程
    Java 不可变对象
    java volatile
    Go语言
    mongodb 基础语法
    Linux 命令大全
    Java json字符串对比
    sqlserver 数据库阻塞和死锁
    http 和 https 的区别
  • 原文地址:https://www.cnblogs.com/liun1994/p/3834618.html
Copyright © 2020-2023  润新知