微信服务器后消息体的接收示例

  介绍

这篇文章主要介绍了微信服务器后消息体的接收示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

微信服务器后消息体的接收

<强>(一)消息类型和消息格式

上面有说道我们所有的和微信服务器之间进行沟通基本都是通过帖子消息体完成的,首先我们了解下消息体的类型,大致类型有两种:

<>强普通消息类型:强文本消息,图片消息,语音消息,视频消息,小视频消息,地理位置消息,链接消息

<强>事件消息类型:强关注/取消关注事件,扫描带参数二维码事件,上报地理位置事件,自定义菜单事件,点击菜单拉取消息时的事件推送,点击菜单跳转链接时的事件推送
消息类型:微信服务端推送的所有消息体的类型格式都是xml格式;

<强>(二)消息重试机制

微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次假。如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试,但是这里后期可以使用【客服消息接口】去完成消息再次推送。

<强>(三)消息接收处理

在前面我们有说道微信的消息体是采用xml格式,那么我在这里写了一个MessageUtil去做消息格式的处理,大致代码如下:

package  com.cuiyongzhi.wechat.util;   import  java.io.InputStream;   import  java.io.Writer;   import  java.util.HashMap;   import 并不知道;   import  java.util.Map;   import  javax.servlet.http.HttpServletRequest;   ,   import  org.dom4j.Document;   import  org.dom4j.Element;   import  org.dom4j.io.SAXReader;   ,   import  com.thoughtworks.xstream.XStream;   import  com.thoughtworks.xstream.core.util.QuickWriter;   import  com.thoughtworks.xstream.io.HierarchicalStreamWriter;   import  com.thoughtworks.xstream.io.xml.PrettyPrintWriter;   import  com.thoughtworks.xstream.io.xml.XppDriver;   ,,/* *   ,*名称:MessageUtil   ,* @Description:消息工具类   ,* @author  dapengniao   ,* @date  2016年3月7日,上午10:05:04   ,*/{public  class  MessageUtil    ,,/* *,才能   ,,*,返回消息类型:文本,   ,,*/,   public 才能static  final  String  RESP_MESSAGE_TYPE_TEXT =,“text",,   ,,/* *,才能   ,,*,返回消息类型:音乐,   ,,*/,   public 才能static  final  String  RESP_MESSAGE_TYPE_MUSIC =,“音乐”,,   ,,/* *,才能   ,,*,返回消息类型:图文,   ,,*/,   public 才能static  final  String  RESP_MESSAGE_TYPE_NEWS =,“news",,   ,,/* *,才能   ,,*,请求消息类型:文本,   ,,*/,   public 才能static  final  String  REQ_MESSAGE_TYPE_TEXT =,“text",,   ,,/* *,才能   ,,*,请求消息类型:图片,   ,,*/,   public 才能static  final  String  REQ_MESSAGE_TYPE_IMAGE =,“image",,   ,,/* *,才能   ,,*,请求消息类型:链接,   ,,*/,   public 才能static  final  String  REQ_MESSAGE_TYPE_LINK =,“link",,   ,,/* *,才能   ,,*,请求消息类型:地理位置,   ,,*/,   public 才能static  final  String  REQ_MESSAGE_TYPE_LOCATION =,“location",,   ,,/* *,才能   ,,*,请求消息类型:音频,   ,,*/,   public 才能static  final  String  REQ_MESSAGE_TYPE_VOICE =,“voice",,   ,,/* *,才能   ,,*,请求消息类型:推送,   ,,*/,   public 才能static  final  String  REQ_MESSAGE_TYPE_EVENT =,“event",,   ,,/* *,才能   ,,*,事件类型:订阅(订阅),   ,,*/,   public 才能static  final  String  EVENT_TYPE_SUBSCRIBE =,“subscribe",,   ,,/* *,才能   ,,*,事件类型:退订(取消订阅),   ,,*/,   public 才能static  final  String  EVENT_TYPE_UNSUBSCRIBE =,“unsubscribe",,   ,,/* *,才能   ,,*,事件类型:点击(自定义菜单点击事件),   ,,*/,   public 才能static  final  String  EVENT_TYPE_CLICK =,“CLICK",,   ,,   ,/* *   ,,*,@Description:,解析微信发来的请求(XML),   ,,*,@param  @param 请求   ,,*,@param  @return   ,,*,@param  @throws  Exception ,   ,,*,@author  dapengniao   ,,*,@date  2016年3月7日,上午10:04:02   ,,*/@SuppressWarnings才能(“unchecked")   public 才能;static  Map

微信服务器后消息体的接收示例