最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年01月19日 10:11:03   作者:風的姿態(tài)  
這篇文章主要介紹了Java開發(fā)微信公眾號接收和被動回復普通消息的相關資料,需要的朋友可以參考下

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

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

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

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 {
// 將解析結果存儲在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();
// 得到根元素的所有子節(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();
}

如何被動回復消息

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

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

<xml>
<ToUserName><![CDATA[發(fā)消息的人,即訂閱者]]></ToUserName>
<FromUserName><![CDATA[微信公眾號本身]]></FromUserName>
<CreateTime>消息創(chuàng)建時間(整形)</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為消息發(fā)送的時間戳。MsgType為消息類型,文本為text。Content為消息內容。

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

相關文章

  • 解決java讀取EXCEL數(shù)據(jù)變成科學計數(shù)法的問題

    解決java讀取EXCEL數(shù)據(jù)變成科學計數(shù)法的問題

    這篇文章主要介紹了解決java讀取EXCEL數(shù)據(jù)變成科學計數(shù)法的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Java如何在 Word 中設置上、下標

    Java如何在 Word 中設置上、下標

    這篇文章主要介紹了Java如何在 Word 中設置上、下標,幫助大家更好的利用Java處理文檔,感興趣的朋友可以了解下
    2020-09-09
  • 深入分析Spring Cloud 負載均衡器架構選型

    深入分析Spring Cloud 負載均衡器架構選型

    文章詳細介紹了OpenFeign的初始化和執(zhí)行流程,包括FeignClient注解、FeignClientsRegistrar類、FeignClientFactoryBean工廠類、Targeter接口及其實現(xiàn)等,感興趣的朋友一起看看吧
    2024-12-12
  • SpringCloud中Zuul網(wǎng)關原理及其配置

    SpringCloud中Zuul網(wǎng)關原理及其配置

    Spring?Cloud是一個基于Spring?Boot實現(xiàn)的微服務應用開發(fā)工具,其中的Zuul網(wǎng)關可以實現(xiàn)負載均衡、路由轉發(fā)、鑒權、限流等功能,本文將從Spring?Cloud中Zuul網(wǎng)關的原理、使用場景和配置過程詳細介紹,幫助大家更好地了解和應用Zuul網(wǎng)關,需要的朋友可以參考下
    2023-06-06
  • 這一次搞懂SpringMVC原理說明

    這一次搞懂SpringMVC原理說明

    這篇文章主要介紹了這一次搞懂SpringMVC原理說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • java開發(fā)之基于Validator接口的SpringMVC數(shù)據(jù)校驗方式

    java開發(fā)之基于Validator接口的SpringMVC數(shù)據(jù)校驗方式

    這篇文章主要介紹了java開發(fā)之基于Validator接口的SpringMVC數(shù)據(jù)校驗方式,文中附含詳細示例代碼,有需要的朋友可以借鑒參考下
    2021-09-09
  • 關于druid連接池的使用詳解

    關于druid連接池的使用詳解

    文章介紹了Druid連接池的兩種使用方式:直接在代碼中配置和通過配置文件配置,同時,文章詳細講解了如何在Web項目中啟用Druid的監(jiān)控功能,包括配置web.xml文件、設置過濾器等步驟,最后,文章還提到了Druid提供的加密解密工具,使數(shù)據(jù)庫密碼更安全
    2025-02-02
  • Spring案例打印機的實現(xiàn)過程詳解

    Spring案例打印機的實現(xiàn)過程詳解

    這篇文章主要介紹了Spring案例打印機的實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • java并發(fā)包工具CountDownLatch源碼分析

    java并發(fā)包工具CountDownLatch源碼分析

    這篇文章主要為大家介紹了java并發(fā)包工具CountDownLatch源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 一文帶你吃透JSP增刪改查實戰(zhàn)案例詳細解讀

    一文帶你吃透JSP增刪改查實戰(zhàn)案例詳細解讀

    這篇文章主要為大家詳細介紹了JSP中增刪改查實戰(zhàn)案例的相關知識,文中的示例代碼講解現(xiàn)象,具有一定的借鑒價值,感興趣的小伙伴可以了解一下
    2023-03-03

最新評論

灵川县| 莫力| 和田县| 济南市| 衡阳县| 波密县| 子长县| 文昌市| 乌鲁木齐县| 大悟县| 泰和县| 金秀| 台北市| 梅河口市| 新巴尔虎左旗| 广水市| 灵山县| 平原县| 云和县| 东源县| 淳化县| 额济纳旗| 青州市| 肇庆市| 沁水县| 长垣县| 隆化县| 垣曲县| 建瓯市| 孙吴县| 通化县| 库车县| 绥中县| 盘锦市| 靖远县| 永嘉县| 宣武区| 秦皇岛市| 昌乐县| 巴林左旗| 雅江县|