一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java開發微信公眾號接收和被動回復普通消息

Java開發微信公眾號接收和被動回復普通消息

2019-06-16 21:21風的姿態 Java教程

這篇文章主要介紹了Java開發微信公眾號接收和被動回復普通消息的相關資料,需要的朋友可以參考下

上篇說完了如何接入微信公眾號,本文說一下微信公眾號的最基本功能:普通消息的接收和回復。說到普通消息,那么什么是微信公眾號所定義的普通消息呢,微信開發者文檔中提到的接收的普通消息包括如下幾類

1.文本消息
2.圖片消息
3.語音消息
4.視頻消息
5.小視頻消息
6.地理位置消息
7.鏈接消息(被動回復的消息)

被動回復的普通消息包括:

1.回復文本消息
2.回復圖片消息
3.回復語音消息
4.回復視頻消息
5.回復音樂消息
6.回復圖文消息

其實接收消息和被動回復消息這兩個動作是不分家的,這本來就是一個交互場景,一般情況就是公眾號通過分析接收到的消息,會給出對應的回復。當然也不能排除一些特殊業務了。

如何接收消息

要接收的這7中消息的xml格式這里就不列出了,請到官方文檔查看,有具體的格式定義和屬性說明。格式很簡單,基本共有屬性包括ToUserName、FromUserName、CreateTime、MsgType、MsgId,并且每種類型有自己特殊的屬性。

看到這里,其實就很明白了,接收消息的過程其實就是獲取post請求的這個xml,然后對這個xml進行分析的過程。post請求的入口還是之前提到的微信公眾號接入的那個地址,整個公眾號的所有請求都會走這個入口,只是接入時是get請求,其它情況下是post請求。處理xml這里用了dom4j,xml處理代碼如下,在servlet的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();
// 遍歷所有子節點
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();
}

如何被動回復消息

下面我基于這樣一個邏輯來演示構造回復的消息,接收到文本消息"文本",回復文本消息;接收到“圖片”,回復圖片消息;接收到“語音”,回復語音消息;接收到“視頻”,回復視頻消息;接收到“音樂”,回復音樂消息;接收到“圖文”,回復圖文消息。

以回復文本消息作為說明:

<xml>
<ToUserName><![CDATA[發消息的人,即訂閱者]]></ToUserName>
<FromUserName><![CDATA[微信公眾號本身]]></FromUserName>
<CreateTime>消息創建時間(整形)</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[消息內容]]></Content>
</xml>

前兩個屬性可以從接收的消息中獲取,接收的消息格式如下:

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName> 
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a text]]></Content>
<MsgId>1234567890123456</MsgId>
</xml> 

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

CreateTime為消息發送的時間戳。MsgType為消息類型,文本為text。Content為消息內容。

具體每一種類型消息的回復,就是構造此種類型的xml格式內容,格式大同小異,只是音樂、視頻、語音、圖文格式相對于文本消息構造的xml內容稍微復雜一點。具體可參考官方文檔。這里不做贅述,相信各位一看便明白。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品人成网在线播放影院 | 人皮高跟鞋在线观看 | 视频一区二区 村上凉子 | 青青视频国产依人在线 | 天天色综合久久 | 亚洲欧美久久久久久久久久爽网站 | porno xxxx日本| 国产探花在线观看 | 农夫成人网| 色婷婷网 | 桃乃木香奈作品在线观看 | bnb998八度免费影院丫意浓 | 4399h漫画| 日本免费在线播放 | 高清男的插曲女的 欢迎你老狼 | 日韩精品一区二区三区中文版 | 亚洲AV蜜桃永久无码精品无码网 | 精品国产91久久久久久久 | 亚洲高清中文字幕精品不卡 | www红色一片在线观看版 | 果冻传媒天美传媒网址入口 | 久热人人综合人人九九精品视频 | 欧美日韩精品乱国产 | 网址在线观看你懂我意思吧免费的 | 午夜勾魂曲 | a亚洲天堂 | 日产2021免费一二三四区 | 国产欧美视频在线观看 | 亚洲国产果果在线播放在线 | 精品亚洲综合久久中文字幕 | 亚洲国产精品久久丫 | 四虎导航| 欧美视频一区二区专区 | 啪啪无尽3d动漫漫画免费网站 | 亚洲精品成人A8198A片漫画 | 国产精品久久久久不卡绿巨人 | 日日摸夜夜爽色婷婷91 | ady成人映画网站官网 | 日韩免费高清完整版 | 热99这里有精品综合久久 | 美女脱了内裤打开腿让男人图片 |