Java開辟微信"號吸收和主動答復通俗新聞。本站提示廣大學習愛好者:(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內容略微龐雜一點。詳細可參考官方文檔。這裡不做贅述,信任列位一看便明確。