1. 程式人生 > >使用Java語言開發微信公眾平臺(七)——音樂消息的回復

使用Java語言開發微信公眾平臺(七)——音樂消息的回復

使用 protoc class exc message 方法 文件上傳 pre wiki

使用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語言開發微信公眾平臺(七)——音樂消息的回復