微信公众号开发 - 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";
}
上传
上传到素材库这里注意看文档
图片(image): 2M,支持PNGJPEGJPGGIF格式
语音(voice):2M,播放长度不超过60s,支持AMRMP3格式
视频(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);
}
}
创建实体类
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);
}