使用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的時候,接收音樂:

    運行效果如下

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM