亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

被動回復(fù)的普通消息包括:

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

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

如何接收消息

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

看到這里,其實就很明白了,接收消息的過程其實就是獲取post請求的這個xml,然后對這個xml進(jìn)行分析的過程。post請求的入口還是之前提到的微信公眾號接入的那個地址,整個公眾號的所有請求都會走這個入口,只是接入時是get請求,其它情況下是post請求。處理xml這里用了dom4j,xml處理代碼如下,在servlet的post方法中調(diào)用parseXml方法即可:

public static Map parseXml(HttpServletRequest request) throws Exception {
// 將解析結(jié)果存儲在HashMap中
Map map = new HashMap();
// 從request中取得輸入流
InputStream inputStream = request.getInputStream();
/*
* 讀取request的body內(nèi)容 此方法會導(dǎo)致流讀取問題 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();
}

如何被動回復(fù)消息

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

以回復(fù)文本消息作為說明:

<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便是回復(fù)消息的FromUserName,接收消息格式中的FromUserName便是回復(fù)消息的ToUserName。

CreateTime為消息發(fā)送的時間戳。MsgType為消息類型,文本為text。Content為消息內(nèi)容。

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

相關(guān)文章

  • java 判斷兩個對象是否為同一個對象實例代碼

    java 判斷兩個對象是否為同一個對象實例代碼

    這篇文章主要介紹了java 判斷兩個對象是否為同一個對象實例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Spring和SpringBoot之間的區(qū)別

    Spring和SpringBoot之間的區(qū)別

    這篇文章主要介紹了Spring和SpringBoot之間的區(qū)別,幫助大家更好的理解和學(xué)習(xí)使用這兩種框架,感興趣的朋友可以了解下
    2021-04-04
  • default怎么修飾接口中的方法詳解

    default怎么修飾接口中的方法詳解

    今天給各位小伙伴們總結(jié)一下default怎么修飾接口中的方法,文中有非常詳細(xì)的圖文解說.對正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • SpringBoot使用Spring Test進(jìn)行集成測試的流程步驟

    SpringBoot使用Spring Test進(jìn)行集成測試的流程步驟

    Spring Test 是 Spring Framework 提供的一個測試框架,它可以幫助我們進(jìn)行集成測試,在本文中,我們將介紹如何使用 Spring Test 進(jìn)行集成測試,需要的朋友可以參考下
    2023-06-06
  • MyBatis-Plus的物理刪除和邏輯刪除(使用場景)

    MyBatis-Plus的物理刪除和邏輯刪除(使用場景)

    數(shù)據(jù)庫中的數(shù)據(jù)刪除會分為兩種:物理刪除 和 邏輯刪除,接下來通過本文給大家介紹MyBatis-Plus的物理刪除和邏輯刪除使用場景分析,感興趣的朋友一起看看吧
    2021-09-09
  • spring boot配置多個請求服務(wù)代理的完整步驟

    spring boot配置多個請求服務(wù)代理的完整步驟

    這篇文章主要給大家介紹了關(guān)于spring boot配置多個請求服務(wù)代理的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 淺談spring中scope作用域

    淺談spring中scope作用域

    這篇文章主要介紹了淺談spring中scope作用域,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 利用SpringMVC接收復(fù)雜對象和多個文件(前端使用JQuery)

    利用SpringMVC接收復(fù)雜對象和多個文件(前端使用JQuery)

    這篇文章主要介紹了利用SpringMVC接收復(fù)雜對象和多個文件(前端使用JQuery),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java中常用數(shù)據(jù)類型的輸入輸出詳解

    Java中常用數(shù)據(jù)類型的輸入輸出詳解

    本文主要介紹了Java中幾個常用的數(shù)據(jù)類型是如何輸入和輸出的,例如:Char型、int型、double型、數(shù)組、字符串等,對我們學(xué)習(xí)java有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)
    2021-12-12
  • myBatis實現(xiàn)三級嵌套復(fù)雜對象的賦值問題

    myBatis實現(xiàn)三級嵌套復(fù)雜對象的賦值問題

    這篇文章主要介紹了myBatis實現(xiàn)三級嵌套復(fù)雜對象的賦值問題,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11

最新評論