微信消息处理

  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 }

微信消息处理,布布扣,bubuko.com

时间: 2024-12-28 01:12:15

微信消息处理的相关文章

微信消息处理JAXP-sax解析

1 package cn.zhaokai.sax; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.PrintWriter; 6 import java.text.SimpleDateFormat; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import javax.servlet.ServletExcepti

微信消息处理JAXP-dom解析

1 package cn.lihainan; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.PrintWriter; 6 7 import javax.servlet.ServletException; 8 import javax.servlet.ServletRequest; 9 import javax.servlet.http.HttpServlet; 10 import ja

微信接入机器人实现对别人消息和群at消息的自动回复

微信接入机器人实现对别人消息和群at消息的自动回复 有时候,我们想让我们的微信号对别人发出的各种消息做出回复.我们可以通过接入图灵机器人的方式实现. IDLE编写py文件并保存,命名为wxbot. #!/usr/bin/env python # coding: utf-8 import os import sys import webbrowser import pyqrcode import requests import json import xml.dom.minidom import

微信公众平台消息接口开发-封装weixin.class.php(转)

一.封装weixin.class.php 由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处理. 我们就考虑在这个基础上做一次封装,weixin.class.php,代码如下: <?php class Weixin {     public $token = '';//token     public $debug =  false;//是否debug的状态标示,方便我们在调试的时候记录一些中间数据     public $setFlag = false;

微信消息的处理和应答

1.微信消息应答流程微信服务器是客户手机和开发服务器信息流通的桥梁.消息流程图如下: 2.微信服务器向开发服务器请求消息1)文本消息处理2)事件消息处理3)开发者认证处理 微信消息处理入口操作,代码示例如下: public void ProcessRequest(HttpContext context) { //WHC.Framework.Commons.LogTextHelper.Info("测试记录"); string postString = string.Empty; if (

微信开发——通过授权获取用户的基本信息

这年头,招个人不容易,现在大小活都得干了, 现在干起了微信开发这活儿,顺带写点经验. 上一回,写了篇文章是封装微信接口消息的处理的,具体可以看:实现虽易,写好不易--小玩意也能体现编码功力,微信消息处理框架发布 现在来谈谈如何获取通过微信提供的接口来获取微信用户所写的基本信息,包括国家,省,市,昵称.当然,要获取用户的信息,是要经过用户授权.关于这部份的文档,点击这里可以看到. 我要说的是具体的操作. 一.填写授权回调页面的域名 在这里填的是 wx.alinq.org.在获得用户的授权后,会跳转

Jfinal极速开发微信系列教程(一)--------------Jfinal_weixin demo的使用分析

概述: Jfinal_weixin已经出了有好一段时间了!一直在关注当中......最近工作上有需要到这个东西,所以,话了两个小时来看看这个东西,看完demo以后,豁然开朗,原理微信和一般的web项目什么的都是一样的!!所以,为了让后面的同学能够少走一些弯路,我觉得我很有必要把这个学习的过程记录下来,然后给大家进行参考,这样能够让更多的人完成这个微信项目的学习,从零开始学习. 在看此博客有什么不懂的地方可以在我的微信公众号或者微社区中交流.  微信开发交流群:114196246 如何开发微信?,

微信公众平台消息接口开发-封装weixin.class.php

原文:微信公众平台消息接口开发-封装weixin.class.php 一.封装weixin.class.php 由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处理. 我们就考虑在这个基础上做一次封装,weixin.class.php,代码如下: <?php class Weixin {     public $token = '';//token     public $debug =  false;//是否debug的状态标示,方便我们在调试的时候记录一

玩玩微信公众号Java版之二:接收、处理及返回微信消息

前面已经配置了微信服务器,那么先开始最简单的接收微信消息吧~ 可以用我们的微信号来直接进行测试,下面先看测试效果图: 这是最基本的文本消息的接收.处理及返回,来看看是怎么实现的吧! 首先可以参考微信消息相关的接口文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 具体实现如下: 第一步,接收微信发送的文本消息入口: 1 /** 2 * 处理微信服务器发来的消息 3 */ 4 public void doPost