Java开发微信公众号接收和被动回复普通消息

网友投稿 282 2023-07-23


Java开发微信公众号接收和被动回复普通消息

1.文本消息

2.图片消息

3.语音消息

4.视频消息

5.小视频消息

6.地理位置消息

7.链接消息(被动回复的消息)

被动回复的普通消息包括:

1.回复文本消息

2.回复图片消息

3.回复语音消息

4.回复视频消息

5.回复音乐消息

6.回复图文消息

如何接收消息

要接收的这7中消息的xml格式这里就不列出了,请到官方文档查看,有具体的格式定义和属性说明。格式很简单,基本共有属性包括ToUserName、FromUserName、CreateTime、MsgType、MsgId,并且每种类型有自己特殊的属性。

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 elementList = root.elements();

// 遍历所有子节点

for (Element e : elementList)

map.put(e.getName(), e.getText());

// 释放资源

inputStream.close();

inputStream = null;

return map;

}

private static String inputStream2String(InputStream is) throws IOException {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

int i = -1;

while ((i = is.read()) != -1) {

baos.write(i);

}

return baos.toString();

}

如何被动回复消息

下面我基于这样一个逻辑来演示构造回复的消息,接收到文本消息"文本",回复文本消息;接收到“图片”,回复图片消息;接收到“语音”,回复语音消息;接收到“视频”,回复视频消息;接收到“音乐”,回复音乐消息;接收到“图文”,回复图文消息。

以回复文本消息作为说明:

<![CDATA[发消息的人,即订阅者]]>

消息创建时间(整形)

<![CDATA[text]]>

<![CDATA[消息内容]]>

前两个属性可以从接收的消息中获取,接收的消息格式如下:

<![CDATA[toUser]]>

<![CDATA[fromUser]]>

1348831860

<![CDATA[text]]>

<![CDATA[this is a text]]>

1234567890123456

其中接收消息格式中的ToUserName便是回复消息的FromUserName,接收消息格式中的FromUserName便是回复消息的ToUserName。

CreateTime为消息发送的时间戳。MsgType为消息类型,文本为text。Content为消息内容。

具体每一种类型消息的回复,就是构造此种类型的xml格式内容,格式大同小异,只是音乐、视频、语音、图文格式相对于文本消息构造的xml内容稍微复杂一点。具体可参考官方文档。这里不做赘述,相信各位一看便明白。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java遍历读取xml文件内容
下一篇:Java基于Socket实现HTTP下载客户端
相关文章

 发表评论

暂时没有评论,来抢沙发吧~