微信学习_03_文本消息
2016-04-26 22:56
465 查看
文本消息
源码下载地址
项目目录结构如下
所需jar包
dom4j-1.6.1.jar(解析xml,把xml放进map类型中,方便以后操作)xstream-1.3.1.jar(把对象转成xml String类型)
添加文本对象
package com.imooc.po; public class TextMessage { public final static String MESSAGE_ToUserName = "ToUserName"; public final static String MESSAGE_FromUserName = "FromUserName"; public final static String MESSAGE_CreateTime = "CreateTime"; public final static String MESSAGE_MsgType = "MsgType"; public final static String MESSAGE_Content = "Content"; public final static String MESSAGE_MsgId = "MsgId"; public final static String MESSAGE_MsgType_TEXT = "text"; private String ToUserName; private String FromUserName; private long CreateTime; private String MsgType; private String Content; private String MsgId; public String getToUserName() { return ToUserName; } public void setToUserName(String toUserName) { ToUserName = toUserName; } public String getFromUserName() { return FromUserName; } public void setFromUserName(String fromUserName) { this.FromUserName = fromUserName; } public String getMsgType() { return MsgType; } public void setMsgType(String msgType) { this.MsgType = msgType; } public String getContent() { return Content; } public void setContent(String content) { this.Content = content; } public String getMsgId() { return MsgId; } public void setMsgId(String msgId) { this.MsgId = msgId; } public long getCreateTime() { return CreateTime; } public void setCreateTime(long createTime) { this.CreateTime = createTime; } }
添加工具类
添加工具类,在工具类中增加方法xml2Map,把微信公众平台传过来的xml解析放进map中,增加方法textMessage2XML把文本对象转成xml String类型。package com.imooc.util; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.imooc.po.TextMessage; import com.thoughtworks.xstream.XStream; public class MessageUtil { public final static String MESSAGE_TEXT = "text"; public final static String MESSAGE_IMAGE = "image"; public final static String MESSAGE_VOICE = "voice"; public final static String MESSAGE_VEDIO = "vedio"; public final static String MESSAGE_NEWS = "news"; public final static String MESSAGE_LINK = "link"; public final static String MESSAGE_LOCATION = "location"; public final static String MESSAGE_EVENT = "event"; public final static String MESSAGE_SUBSCRIBE = "subscribe"; public final static String MESSAGE_UNSUBSCRIBE = "unsubscribe"; public final static String MESSAGE_CLICK = "CLICK"; public final static String MESSAGE_VIEW = "VIEW"; /** * xml转成map * @param request * @return * @throws Exception */ public static Map<String, String> xml2Map(HttpServletRequest request) throws Exception { Map<String, String> map = new HashMap<String,String>(); InputStream inputStream = request.getInputStream(); SAXReader reader = new SAXReader(); Document document = reader.read(inputStream); Element root = document.getRootElement(); List<Element> elements = root.elements(); for(Element element : elements){ map.put(element.getName(), element.getText()); } return map; } /** * 将文本消息对象转成XML * @param textMessage * @return */ public static String textMessage2XML(TextMessage textMessage) { XStream xStream = new XStream(); xStream.alias("xml", textMessage.getClass()); return xStream.toXML(textMessage); } }
在servlet中重写post方法
package com.imooc.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.imooc.po.TextMessage; import com.imooc.util.CheckUtil; import com.imooc.util.MessageUtil; public class WeixinServlet extends HttpServlet { private static final long serialVersionUID = 1L; public WeixinServlet() { super(); } protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { String signature = req.getParameter("signature"); String timestamp = req.getParameter("timestamp"); String nonce = req.getParameter("nonce"); String echostr = req.getParameter("echostr"); PrintWriter out = response.getWriter(); if(CheckUtil.checkSignature(signature, timestamp, nonce)){ out.print(echostr); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); try { Map<String, String> map = MessageUtil.xml2Map(request); String content = map.get(TextMessage.MESSAGE_Content); String toUserName = map.get(TextMessage.MESSAGE_ToUserName); String fromUserName = map.get(TextMessage.MESSAGE_FromUserName); String msgType = map.get(TextMessage.MESSAGE_MsgType); String message = null; if(MessageUtil.MESSAGE_TEXT.equals(msgType)){ TextMessage b8aa textMessage = new TextMessage(); textMessage.setContent("您发送的内容是" + content); textMessage.setToUserName(fromUserName); textMessage.setFromUserName(toUserName); textMessage.setMsgType(TextMessage.MESSAGE_MsgType_TEXT); textMessage.setCreateTime(new Date().getTime()); message = MessageUtil.textMessage2XML(textMessage); } System.out.println(message); out.write(message); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { out.close(); } } }
测试后台能否收到微信发送的内容
在微信客户端输入内容,可以看到微信公众号返回了对应的信息。测试通过。相关文章推荐
- 微信公众平台开发—— 网页获取用户地理位置
- 微信JS-SDK说明文档---自己总结了config时的参数获取方式
- 微信网页获取openId
- 微信打开网址添加在浏览器中打开提示
- moveshow-监听手指位置趣味小程序
- Android小程序-Walker注册页面(四)
- 微信第三方登录
- ios使用友盟分享到QQ/微信时时如何判断手机上是否安装了QQ以及微信的客户端
- 微信主动发送消息到客户端
- 支付宝支付 微信支付 SDK的集成教程
- 微信与支付宝钱包的竞争分析
- C#开发微信门户及应用(36)--微信卡劵管理的封装操作
- 干货二:微信SDK-分享初探-更新中
- 一个聊天小程序
- android中微信、朋友圈分享无回调的问题
- iso android a标签css :active 在微信或app内嵌不起作用解决方案
- 第三方登录——QQ、微信、新浪微博和百度登录
- 仿微信朋友圈动态内容全文显示与收起实现
- .Net实现微信公众平台开发接口(三) 之 “信息回复”
- .Net实现微信公众平台开发接口(一) 之 “微信开发配置”