使用Java語言開發微信公眾平臺(七)——音樂消息的回復
使用Java語言開發微信公眾平臺(七)——音樂消息的回復
在上一節課程中,我們學習了圖片消息的回復功能。根據微信公眾平臺的消息類型顯示,微信共支持文本、圖片、語音、視頻、音樂、圖文等6種消息類型的回復:
其中,我們已經實現了文本、圖文、圖片等消息的回復處理,而語音、視頻兩種消息類型的功能與圖片消息完全一樣。均需使用我們寫好的文件上傳接口,上傳文件並獲得MediaID,從而使用MediaID推送圖片、語音、視頻。沒有學習過的同學,可進入傑瑞教育博客園繼續學習:http://www.cnblogs.com/jerehedu/p/6781456.html
今天,我們來學習最後一種消息類型——音樂消息的回復功能。
一、音樂消息數據結構
按照國際慣例,在學習一種新的消息回復的時候,我們都需要首先了解這種消息的數據結構以及XML 包結構。那麽,讓我們進入微信開發幫助文檔看一下:
http://mp.weixin.qq.com/wiki/1/6239b44c206cab9145b1d52c67e6c551.html
我們可以清晰的看到這樣一段XML數據結構:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[music]]></MsgType>
<Music>
<Title><![CDATA[TITLE]]></Title>
<Description><![CDATA[DESCRIPTION]]></Description>
<MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl>
<HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl>
<ThumbMediaId><![CDATA[media_id]]></ThumbMediaId>
</Music>
</xml>
官方給出的解釋如下:
在這當中,我們看到發送音樂消息,除了必備的標題、描述、鏈接等。還需要一張縮略圖id,那麽聰明的同學應該知道怎麽處理了……
二、上傳縮略圖並取得ID
上周我們已經實現了圖片的上傳功能,其中在測試類中上傳圖片是,我們選擇的上傳的類型為image:
根據上傳的媒體文件類型【媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb)】我們只需要把image修改為thumb,即可實現縮略圖的上傳,並取得MediaID:
public static void main(String[] args) throws ClientProtocolException, IOException,
KeyManagementException, NoSuchAlgorithmException, NoSuchProviderException { AccessToken token = WeiXinUtil.getAccessToken(); System.out.println("Access_Token為:"+token.getToken()); System.out.println("有效時間為:"+token.getExpiresIn()); String path = "E:/bg.jpg"; String MediaId = WeiXinUtil.upload(path, token.getToken(), "thumb");
}
註意:上傳文件類型只能是JPG且小於64KB。最終,得到thumb_media_id如下:4Ln9zjbEdBjMWS-TtYCmd89stx7CVmmmMGx1wdKul9-g6zOHQYJMukPEsC0pVd4h
得到縮略圖的ID以後,我們就可以進行音樂消息的組裝了。
三、組裝音樂消息實體對象
① 組裝Music.java實體
所需屬性如下,並提供Get/Set方法
② 組裝MusicMessage.java實體
所需屬性如下,並繼承自MusicMessage類。
四、編寫音樂對象轉XML方法
回到MessageUtil工具類,撰寫音樂對象轉XML方法:
public static String musicMessageToXml(MusicMessage musicMessage){
XStream xstream = new XStream();
xstream.alias("xml", musicMessage.getClass());
return xstream.toXML(musicMessage);
}
五、編寫組裝音樂消息的方法
繼續在MessageUtil類中,進行音樂消息的組裝。當然,需要提前準備:縮略圖ID、音樂鏈接。其中,我在WebRoot下的res文件夾中,放了一個MP3音樂文件,因此可得到我自己的音樂鏈接:http://jerehedu.applinzi.com/res/達康書記不容易.mp3
/**
* 組裝音樂消息
*/
public static String initMusicMessage(String toUserName,String fromUserName){
String message = null;
Music music = new Music();
music.setThumbMediaId("4Ln9zjbEdBjMWS-TtYCmd89stx7CVmmmMGx1wdKul9-g6zOHQYJMukPEsC0pVd4h");
music.setTitle("達康書記不同意");
music.setDescription("達康書記不容易——山東工商學院楊軍老師作詞作曲演唱");
music.setMusicUrl("http://jerehedu.applinzi.com/res/達康書記不容易.mp3");
music.setHQMusicUrl("http://jerehedu.applinzi.com/res/達康書記不容易.mp3");
MusicMessage musicMessage = new MusicMessage();
musicMessage.setFromUserName(toUserName);
musicMessage.setToUserName(fromUserName);
musicMessage.setMsgType(MESSAGE_MUSIC);
musicMessage.setCreateTime(new Date().getTime());
musicMessage.setMusic(music);
message = musicMessageToXml(musicMessage);
return message;
}
六、測試與運行
上述方法編寫完成後,回到Servlet中調用方法,當回復5的時候,接收音樂:
運行效果如下:
使用Java語言開發微信公眾平臺(七)——音樂消息的回復