• 微信消息处理


      1 package cn.liuning;
      2 
      3 
      4 import java.io.IOException;
      5 import java.io.InputStream;
      6 import java.io.PrintWriter;
      7 import java.text.SimpleDateFormat;
      8 import java.util.LinkedHashMap;
      9 import java.util.List;
     10 import java.util.Map;
     11 
     12 import javax.servlet.ServletException;
     13 import javax.servlet.http.HttpServlet;
     14 import javax.servlet.http.HttpServletRequest;
     15 import javax.servlet.http.HttpServletResponse;
     16 
     17 import org.dom4j.Document;
     18 import org.dom4j.Element;
     19 import org.dom4j.io.SAXReader;
     20 import org.kohsuke.rngom.digested.Main;
     21 
     22 
     23 public class CoreServe extends HttpServlet 
     24 {
     25     
     26      //用于存放解析的结果
     27     public static Map<String, String> parseXml(HttpServletRequest request, HttpServletResponse response) throws Exception 
     28     {  
     29         // 将解析结果存储在HashMap中  ,用到了泛型,就是Map中只能使用string-string的对用,其他数据类型不行
     30         Map<String, String> map = new LinkedHashMap<String, String>();  
     31         // 从request中取得输入流  
     32         InputStream inputStream = request.getInputStream(); 
     33         // 读取输入流   
     34         SAXReader reader = new SAXReader();  
     35         Document document = reader.read(inputStream);  
     36         // 得到xml根元素  
     37         Element root = document.getRootElement();   
     38         // 得到根元素的所有子节点  
     39         List<Element> elementList = root.elements();  
     40         // 遍历所有子节点,增强for进行循环
     41         //也可以使用传统方式
     42         for (Element e : elementList)  
     43             map.put(e.getName(), e.getText());  
     44         // 释放资源  
     45         inputStream.close();  
     46         inputStream = null;  
     47         
     48 
     49         //原样输出<XML>文档
     50         String value = document.asXML();
     51         char []str = value.toCharArray();
     52         PrintWriter out = response.getWriter();
     53         out.println("原始消息");
     54         // out.println(value);
     55         //直接输出string会有<?xml version="1.0" encoding="UTF-8"?>
     56         //所以除去头上的39个元素输出
     57         for(int i=0;i<value.length()-39;i++)
     58         {
     59             out.print(str[i+38]);
     60         }
     61         return map;  
     62     }  
     63     public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException        
     64     {
     65         try {
     66             //解决乱码问题
     67          request.setCharacterEncoding("UTF-8");  
     68          response.setContentType("text/html;charset=UTF-8"); 
     69          
     70          Map<String, String> requestMap;
     71          requestMap = parseXml(request,response);
     72          String fromUserName = requestMap.get("FromUserName");
     73          String toUserName = requestMap.get("ToUserName"); 
     74          String createtime = requestMap.get("CreateTime");
     75          int ctime = Integer.parseInt(createtime);
     76          String msgType = requestMap.get("MsgType");   
     77          PrintWriter out = response.getWriter();
     78         out.println("解析结果:");
     79         out.print("FromUserName(来自):");out.println(fromUserName);
     80         out.print("ToUserName(发送至):");out.println(toUserName);
     81         out.print("CreateTime(时间):");
     82         
     83         //时间转换
     84         SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
     85         out.println(format.format((long)ctime*1000L));
     86         
     87         out.print("MsgType(类型):");out.println(msgType);
     88         if(msgType.equals("text"))
     89         {
     90              String content = requestMap.get("Content");
     91              String msgId = requestMap.get("MsgId");
     92              out.print("Content(文本内容):");out.println(content);
     93                 out.print("MsgId(文本消息标记号):");out.println(msgId); 
     94         }
     95         else if(msgType.equals("event"))
     96         {
     97                 String event = requestMap.get("Event");
     98              String eventKey = requestMap.get("EventKey");
     99              out.print("Event(事件):");out.println(event);
    100             out.print("Eventkey(事件值):");out.println(eventKey);
    101         }
    102         out.flush();
    103         out.close();
    104         } catch (Exception e) {
    105             // TODO 自动生成的 catch 块
    106             e.printStackTrace();
    107         }
    108     } 
    109 }
  • 相关阅读:
    用汇编的眼光看c++(之模板函数) 四
    从B树、B+树、B*树谈到R 树 四
    how to locate dll in native c++ world / dotnet world?
    GAC和sidebyside
    ARM VS Intel
    关于dotnet下的encoding
    synchronization objects for interprocess synchronization and multithreadiing
    [remote debug]WinDBG 技巧: 如何用WinDBG远程调试程序
    [tip]transparent bmp
    Review: functor / function object
  • 原文地址:https://www.cnblogs.com/liun1994/p/3834449.html
Copyright © 2020-2023  润新知