?公众号服务器在接收到用户发送的请求消息后,可以通过返回特定的XML结构对消息进行响应
http://mp.weixin.qq.com/wiki/1/6239b44c206cab9145b1d52c67e6c551.html
2.1 响应消息基类编写
1) 接收方帐号(收到的OpenID) ToUserName
2) 开发者微信号(OpenID) FromUserName
3) 消息创建时间 (整型new Date().getTime()) CreateTime
4) 消息类型(text/music/news) MsgType
package com.message; /** * * @author 黄路飞 * * @data 2016年6月18日20:52:46 */ public class BaseMessage { // 接收方帐号(收到的OpenID) private String ToUserName; // 开发者微信号 private String FromUserName; // 消息创建时间 (整型) private long CreateTime; // 消息类型(text/music/news) private String MsgType; public String getToUserName() { return ToUserName; } public void setToUserName(String toUserName) { ToUserName = toUserName; } public String getFromUserName() { return FromUserName; } public void setFromUserName(String fromUserName) { FromUserName = fromUserName; } public long getCreateTime() { return CreateTime; } public void setCreateTime(long createTime) { CreateTime = createTime; } public String getMsgType() { return MsgType; } public void setMsgType(String msgType) { MsgType = msgType; } }
2.2 具体消息格式
根据开发文档中规定的消息格式,我们还要为每种类型编写一个单独的类定义自己特有的属性并且继承上面的基类
2.2.1 文本消息格式
开发文档提供的回复XML格式,可知回复消息文本的时候还需要一个文本消息的内容 Content(长度不能超过2048字节,否则微信服务器会放弃响应,用户则收不到 回复)
package com.message; /** * * @author 黄路飞 * * @data 2016年6月18日20:59:27 */ public class TextMessage extends BaseMessage { private String Content; public String getContent() { return Content; } public void setContent(String content) { Content = content; } }
2.2.2 图片消息回复
可看出在回复图片消息的时候还需要一个MediaId。这里的ID是在回复图片、语音、视频等多媒体消息时都需要的,此ID获取的方式为需要预先上传多媒体文件到微信服务器,上传成功后微信服务器会返回多媒体文件的ID。后面再讲具体实现方式。
package com.message; /** * * @author 黄路飞 * * @data 2016年6月18日21:21:46 */ public class ImageMessage extends BaseMessage { private Image Image; public Image getImage() { return Image; } public void setImage(Image image) { Image = image; } } package com.message; /** * * @author 黄路飞 * * @data 2016年6月18日21:20:53 */ public class Image { private String MediaId; public String getMediaId() { return MediaId; } public void setMediaId(String mediaId) { MediaId = mediaId; } }
2.2.3 语音消息 (同图片消息格式)
package com.message; /** * * @author 黄路飞 * * @data 2016年6月18日21:26:01 */ public class Voice { //媒体文件id private String MediaId; public String getMediaId() { return MediaId; } public void setMediaId(String mediaId) { MediaId = mediaId; } } package com.message; /** * * @author 黄路飞 * * @data 2016年6月18日21:26:16 */ public class VoiceMessage extends BaseMessage { private Voice Voice; public Voice getVoice() { return Voice; } public void setVoice(Voice voice) { Voice = voice; } }
2.2.4 视频消息回复(同图片消息格式)
package com.message; /** * * @author 黄路飞 * * @data 2016年6月18日21:28:05 */ public class VideoMessage extends BaseMessage { //语音 private Video Video; public Video getVideo() { return Video; } public void setVideo(Video video) { Video = video; } } package com.message; /** * * @author 黄路飞 * * @data 2016年6月18日21:28:21 */ public class Video { //媒体文件id private String MediaId; public String getMediaId() { return MediaId; } public void setMediaId(String mediaId) { MediaId = mediaId; } }
2.2.5 图文消息的回复
图文消息包括多种消息,以下为开发文档提供的格式
package com.message; import java.util.List; /** * * @author 黄路飞 * * @data 2016年6月18日21:31:41 */ public class NewsMessage extends BaseMessage { private int ArticleCount; private List<Article>Articles; public int getArticleCount() { return ArticleCount; } public void setArticleCount(int articleCount) { ArticleCount = articleCount; } public List<Article> getArticles() { return Articles; } public void setArticles(List<Article> articles) { Articles = articles; } } package com.message; /** * * @author 黄路飞 * * @data 2016年6月18日21:31:59 */ public class Article { private String Title; private String Description; private String PicUrl; private String Url; 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 getPicUrl() { return PicUrl; } public void setPicUrl(String picUrl) { PicUrl = picUrl; } public String getUrl() { return Url; } public void setUrl(String url) { Url = url; } }