java群发图文消息_使用Java语言开发微信公众平台(四)——图文消息的发送与响应...
在上一篇文章中,我們實(shí)現(xiàn)了被關(guān)注回復(fù)與關(guān)鍵詞回復(fù)功能。在用戶關(guān)注的時(shí)候自動(dòng)推送功能菜單,并根據(jù)用戶輸入的關(guān)鍵詞,回復(fù)特定信息。但是,我們只能回復(fù)文本消息給用戶,如何才回復(fù)一條圖文消息呢?本周,我們一起來學(xué)習(xí)一下微信公眾平臺開發(fā)之【圖文消息的發(fā)送與響應(yīng)】
一、了解圖文消息XML包結(jié)構(gòu)
相信一直學(xué)習(xí)我們系列博文的同學(xué),一定了解我們的“套路”了,首先,我們要來了解一下圖文消息的XML包結(jié)構(gòu)。微信官方提供如下參數(shù)信息:
那么,了解了圖文消息的XML包結(jié)構(gòu)以后,我們就需要參照文本消息的回復(fù),在我們的Java后臺,組裝我們的圖文消息實(shí)體類。
但是,組裝之前,我們不難發(fā)現(xiàn),ToUserName、FromUserName、CreateTime、MsgType等參數(shù),在文本消息中也出現(xiàn)過,而且在之后各種消息中都會(huì)出現(xiàn),那么回想一下我們封裝的文本消息實(shí)體類,很顯然,我們需要將這些相同的內(nèi)容,提取到一個(gè)父類中。下面,我們使用代碼操作一下。
二、重新封裝文本消息&圖文消息實(shí)體類
① 提取文本消息實(shí)體類(子類)代碼至消息實(shí)體類(父類)
首先,打開我們之前寫好的文本消息實(shí)體類textMessage:
找到里面共同的屬性,并將代碼提取到父類中:
新建一個(gè)父類,baseMessage.java,并將上述紅線區(qū)域內(nèi)的代碼提取到父類中,讓我們的textMessage類繼承此父類。
接下來,我們分析一下微信的圖文消息XML包結(jié)構(gòu):
12345678
2
不難發(fā)現(xiàn),在 標(biāo)簽中,可以有一個(gè)或多個(gè)標(biāo)簽,這也就對應(yīng)著一條到多條圖文消息。那么顯然,在組裝圖文消息實(shí)體類時(shí),我們需要構(gòu)建兩個(gè)實(shí)體類,分別為:News.Java?包含每條item(圖文)中的Title、Description、PicUrl、Url?,并組建一個(gè)NewsMessage.java ,繼承自BaseMessage.java,作為我們整個(gè)圖文消息的多個(gè)item。
② 構(gòu)建單條item的實(shí)體類News.java 屬性如下:
③ 構(gòu)建整個(gè)圖文消息的實(shí)體類NewsMessage.java 屬性如下:
三、消息處理工具類MessageUtil中新增圖文消息相關(guān)處理方法
① 新增圖文消息轉(zhuǎn)XML結(jié)構(gòu)方法
我們之前說過,微信只能接受XML結(jié)構(gòu)的消息內(nèi)容,那么我們可以參照之前文本消息轉(zhuǎn)XML的方法,新建一個(gè)方法轉(zhuǎn)化圖文消息:
② 新增初始化圖文消息方法
三、修改Servlet中的doPost方法,發(fā)送圖文消息
此時(shí),我們就完成了圖文消息的回復(fù)發(fā)送,有代碼可知,當(dāng)用戶回復(fù)數(shù)字3時(shí),可收到我們撰寫的圖文消息,點(diǎn)開后將跳轉(zhuǎn)到指定網(wǎng)址,效果如下:
【附錄】 主要代碼如下
MessageUtil工具類,圖文消息轉(zhuǎn)xml&初始化圖文消息方法:
/*** 將圖文消息對象轉(zhuǎn)成XML
*@param*@return
*/
public staticString newsMessageToXml(NewsMessage newsMessage){
XStream xstream= newXStream();//將xml的根節(jié)點(diǎn)替換成 默認(rèn)為NewsMessage的包名
xstream.alias("xml", newsMessage.getClass());//同理,將每條圖文消息News類的報(bào)名,替換為標(biāo)簽
xstream.alias("item", newNews().getClass());returnxstream.toXML(newsMessage);
}/*** 初始化圖文消息*/
public staticString initNewsMessage(String toUSerName,String fromUserName){
List newsList = new ArrayList();
NewsMessage newsMessage= newNewsMessage();//組建一條圖文↓ ↓ ↓
News newsItem = newNews();
newsItem.setTitle("歡迎來到杰瑞教育");
newsItem.setDescription("杰瑞教育,中國高端互聯(lián)網(wǎng)人才培訓(xùn)領(lǐng)導(dǎo)品牌!");
newsItem.setPicUrl("http://www.jredu100.com/statics/images/index/top/logo.png");
newsItem.setUrl("www.jredu100.com");
newsList.add(newsItem);//組裝圖文消息相關(guān)信息
newsMessage.setToUserName(fromUserName);
newsMessage.setFromUserName(toUSerName);
newsMessage.setCreateTime(newDate().getTime());
newsMessage.setMsgType(MESSAGE_NEWS);
newsMessage.setArticle(newsList);
newsMessage.setArticleCount(newsList.size());//調(diào)用newsMessageToXml將圖文消息轉(zhuǎn)化為XML結(jié)構(gòu)并返回
returnMessageUtil.newsMessageToXml(newsMessage);
}
總結(jié)
以上是生活随笔為你收集整理的java群发图文消息_使用Java语言开发微信公众平台(四)——图文消息的发送与响应...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java的八种数据类型_JAVA 的8种
- 下一篇: java静态多态_Java静态方法不具有