目录

前言

回复音乐、语音、视频消息都差不多,就是参数不一样,我就写成一篇了,只写了回复音乐消息,语音和视频看源码吧。

音乐消息

微信公众号开发 - 8.回复音乐/语音/视频消息

微信公众号开发 - 8.回复音乐/语音/视频消息

这里有个ThumbMediaId参数,需要上传素材后获得。

上传到素材库

上传方法

因为上传略缩图和其他有点差异,其他上传的素材id是MediaId,而它需要的参数是ThumbMediaId,所以要修改判断一下。

        JSONObject jsonObj = JSONObject.fromObject(result);
        System.out.println(jsonObj);
        //默认为mediaId
        String typeName = "media_id";
        //如果是thumbMediaId就拼装
        if("thumb".equals(type)){
            typeName = type + "_media_id";
        }

上传

上传到素材库这里注意看文档

微信公众号开发 - 8.回复音乐/语音/视频消息

图片(image): 2M,支持PNG\JPEG\JPG\GIF格式
语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
视频(video):10MB,支持MP4格式
缩略图(thumb):64KB,支持JPG格式

这里是上传缩略图所以是thumb,其它的就自己替换,还要注意自己上传文件的大小格式是否符合规范。

package cn.notemi.test;

import cn.notemi.po.AccessToken;
import cn.notemi.util.WeixinUtil;

/**
 * Title:WeixinTest
 * Description:
 *
 * @author Flicker
 * @create 2017-07-26 下午 5:48
 **/
public class WeixinTest {
    public static void main(String[] args) throws Exception {
        AccessToken token = WeixinUtil.getAccessToken();
        System.out.println("Token:"+token.getToken());
        System.out.println("ExpiresIn:"+token.getExpiresIn());

        String path = "d:\\logo.png";
        String mediaId = WeixinUtil.upload(path,token.getToken(),"thumb");
        System.out.println(mediaId);
    }
}

微信公众号开发 - 8.回复音乐/语音/视频消息

创建实体类

package cn.notemi.po;

/**
 * Title:Music
 * Description:
 *
 * @author Flicker
 * @create 2017-07-27 下午 1:36
 **/
public class Music {
    private String Title;
    private String Description;
    private String MusicUrl;
    private String HQMusicUrl;
    private String ThumbMediaId;

    public String getTitle() {
        return Title;
    }

    public void setTitle(String title) {
        Title = title;
    }

    public String getDescription() {
        return Description;
    }

    public void setDescription(String description) {
        Description = description;
    }

    public String getMusicUrl() {
        return MusicUrl;
    }

    public void setMusicUrl(String musicUrl) {
        MusicUrl = musicUrl;
    }

    public String getHQMusicUrl() {
        return HQMusicUrl;
    }

    public void setHQMusicUrl(String HQMusicUrl) {
        this.HQMusicUrl = HQMusicUrl;
    }

    public String getThumbMediaId() {
        return ThumbMediaId;
    }

    public void setThumbMediaId(String thumbMediaId) {
        ThumbMediaId = thumbMediaId;
    }
}
package cn.notemi.po;

/**
 * Title:MusicMessage
 * Description:
 *
 * @author Flicker
 * @create 2017-07-27 下午 1:37
 **/
public class MusicMessage extends BaseMessage {
    private Music Music;

    public cn.notemi.po.Music getMusic() {
        return Music;
    }

    public void setMusic(cn.notemi.po.Music music) {
        Music = music;
    }
}

转换拼接音乐消息

/**
     * 将音乐消息消息对象转为xml
     * @param musicMessage
     * @return
     */
    public static String MusicMessageToXml(MusicMessage musicMessage){
        XStream xStream = new XStream();
        xStream.alias("xml",musicMessage.getClass());
        return xStream.toXML(musicMessage);
    }

    /**
     * 音乐消息的拼接
     * @param toUserName
     * @param fromUserName
     * @return
     */
    public static String initMusicMessage(String toUserName,String fromUserName){
        String message = null;
        Music music = new Music();
        //这里填写ThumbMediaId
        music.setThumbMediaId("aQXXe4Fp3N3vaEjBonJMXyxAMrkkj2PIfqbgc6iZwM6WerThvdz3TBH1OEw2Ekzs");
        music.setTitle("樱花东街");
        music.setDescription("歌曲樱花东街");
        music.setMusicUrl("http://static.notemi.cn/music/yhdj.mp3");
        music.setHQMusicUrl("http://static.notemi.cn/music/yhdj.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;
    }

controller

        if("4".equals(content)){
                message = MessageUtil.initMusicMessage(toUserName,fromUserName);
            }

测试

微信公众号开发 - 8.回复音乐/语音/视频消息

微信公众号开发 - 8.回复音乐/语音/视频消息

源代码

Weixin.rar