FWQ
使用Java开发微信公众号接收和被动回复普通消息详细介绍
这篇文章主要介绍了java开发微信公众号接收和被动回复普通消息的相关资料,需要的朋友可以参考下 上篇说完了如何接入微信公众号,本文说一下微信公众号的最基本功能:普通消息的接收和回复。说到普通消息,那么什么是微信公众号所定义的普通消息呢,微信开发者文档中提到的接收的普通消息包括如下几类: 1.文本消息2.消息3.语音消息4.消息5.小视频消息6.地理位置消息7.链接消息(被动回复的消息) 被动回复的普通消息包括: 1.回复文本消息2.回复图片消息3.回复语音消息4.回复视频消息5.回复音乐消息6.回复图文消息 立即学习“”; 其实和被动回复消息这两个动作是不分家的,这本来就是一个交互场景,一般情况就是公众号通过分析接收到的消息,会给出对应的回复。当然也不能排除一些特殊业务了。 如何接收消息 要接收的这7中消息的格式这里就不列出了,请到官方文档查看,有具体的格式定义和说明。格式很简单,基本共有属性包括ToUserName、FromUserName、Create、MsgType、MsgId,并且每种类型有自己特殊的属性。 看到这里,其实就很明白了,接收消息的过程其实就是获取的这个xml,然后对这个xml进行分析的过程。post请求的入口还是之前提到的微信公众号接入的那个地址,整个公众号的所有请求都会走这个入口,只是接入时是get请求,情况下是post请求。处理xml这里用了dom4j,xml处理代码如下,在的post方法中调用parseXml方法即可: public static Map parseXml(HttpServletRequest request) throws Exception { // 将解析结果存储在HashMap中 Map map = new HashMap(); // 从request中取得输入流 InputStream inputStream = request.getInputStream(); /* * 读取request的body内容 此方法会导致流读取问题 Premature end of file. Nested exception: * Premature end of file String requestBody = * inputStream2String(inputStream); System.out.println(requestBody); */ // 读取输入流 SAXReader reader = new SAXReader(); Document document = reader.read(inputStream); // 得到xml根元素 Element root = document.getRootElement(); // 得到根元素的所有子节点 List<element> elementList = root.elements(); // 遍历所有子节点…