前面我们说了文本消息,图片消息相对要困难点
我们先看文档
首先这里面xml标签里面有一个image的标签,然后里面有一个mediaID标签,多重标签,顾名思义,你首先有一个msg类,然后属性里面包含image,然后image里面有一个属性mediaid。
从上面我们可以看到mediaid是通过素材管理中的接口上传多媒体文件得到的id
我们看一下文档
接口文档中分为临时素材和永久素材
我们点进去新增临时素材,
确实有一个mediaid,我们发送图片所需要的就是这个id,我们发送消息什么的是通过微信服务器发,虽然我们本地有图片,但是微信服务器没有,所以我们要先将素材上传到微信服务器,获取唯一标识去提取,然后发送
关于如何获取这个id;传送门
我们获取这个id之后就简单了
if ("2".equals(content)) {
String mediaId = WeiXinUtil.upload("C:/Users/Administrator/Desktop/code.jpg", "image");//上传到微信服务器获取mediaId
MsgUtil.sendImageMsgToUser( openId,formUser,response,mediaId);
}
/**
* 发送图片消息
* @param openId
* @param formUser
* @param response
*/
public static void sendImageMsgToUser(String openId, String formUser, HttpServletResponse response,String mediaId) {
ImageMsg msg = new ImageMsg();
Image image = new Image();
image.setMediaId(mediaId);
msg.setImage(image);
msg.setFromUserName(formUser);
msg.setToUserName(openId);
sendMsg(response, msg);
}
后面就跟图片消息一样的了
然后imagemsg类
import java.util.Date;
public class ImageMsg extends BaseMessage{
/**
* 注意首字母一定大写
*/
private Image Image;
public ImageMsg(){
this.setMsgType("image");
this.setCreateTime(new Date().getTime());
}
public Image getImage() {
return Image;
}
public void setImage(Image image) {
this.Image = image;
}
}
image
public class Image {
private String MediaId;//图片消息媒体id
public String getMediaId() {
return MediaId;
}
public void setMediaId(String mediaId) {
MediaId = mediaId;
}
}
发送成功的样例
然后日志消息