這篇文章主要介紹了Java開發(fā)微信公眾號接收和被動回復普通訊息的相關資料,需要的朋友可以參考下
上篇說完瞭如何接入微信公眾號,本文說一下微信公眾號的最基本功能:普通訊息的接收與回覆。說到普通訊息,那麼什麼是微信公眾號所定義的普通訊息呢,微信開發(fā)者文件中提到的接收的普通訊息包括如下幾類:
1.文字訊息
2.圖片訊息
3.語音訊息
4.影片訊息
5.小視訊訊息
6.地理位置訊息
7.連結(jié)訊息(被動回應的訊息)
被動回覆的普通訊息包括:
1.回復文字訊息
2.回覆圖片訊息
3.回覆語音訊息
4.回覆視訊訊息
5.回覆音樂訊息
6.回覆圖文訊息
#其實接收訊息和被動回覆訊息這兩個動作是不分家的,這本來就是一個互動場景,一般情況就是公眾號透過分析接收到的訊息,會給予對應的回復。當然也不能排除一些特殊業(yè)務了。
如何接收訊息
要接收的這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 { // 將解析結(jié)果存儲在HashMap中 Map map = new HashMap(); // 從request中取得輸入流 InputStream inputStream = request.getInputStream(); /* * 讀取request的body內(nèi)容 此方法會導致流讀取問題 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(); // 得到根元素的所有子節(jié)點 List<Element> elementList = root.elements(); // 遍歷所有子節(jié)點 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(); }
如何被動回覆訊息
下面我基於這樣一個邏輯來示範建構(gòu)回覆的訊息,接收到文字訊息"文字",回覆文字訊息;接收到「圖片」,回覆圖片訊息;接收到“語音”,回覆語音訊息;接收“視訊”,回覆視訊訊息;接收“音樂”,回覆音樂訊息;接收“圖文”,回覆圖文訊息。
以回覆文字訊息作為說明:
<xml> <ToUserName><![CDATA[發(fā)消息的人,即訂閱者]]></ToUserName> <FromUserName><![CDATA[微信公眾號本身]]></FromUserName> <CreateTime>消息創(chuàng)建時間(整形)</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[消息內(nèi)容]]></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就是回覆訊息的ToU??serName。
CreateTime為訊息發(fā)送的時間戳。 MsgType為訊息類型,文字為text。 Content為訊息內(nèi)容。
具體每一種類型訊息的回復,就是建構(gòu)此種類型的xml格式內(nèi)容,格式大同小異,只是音樂、視訊、語音、圖文格式相對於文字訊息構(gòu)造的xml內(nèi)容稍微複雜一點。具體可參考官方文件。這裡不做贅述,相信各位一看就明白。
以上是使用Java開發(fā)微信公眾號接收和被動回覆普通訊息詳細介紹的詳細內(nèi)容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)