您的位置:首页 > 移动开发 > 微信开发

第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装

2015-09-30 10:26 741 查看
微信服务器和第三方服务器之间究竟是通过什么方式进行对话的?

下面,我们先看下图:

回复文本消息

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>

参数     是否必须     描述
ToUserName     是     接收方帐号(收到的OpenID)
FromUserName     是     开发者微信号
CreateTime     是     消息创建时间 (整型)
MsgType     是     text
Content     是     回复的消息内容(换行:在content中能够换行,微信客户端就支持换行显示)
回复图片消息

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<Image>
<MediaId><![CDATA[media_id]]></MediaId>
</Image>
</xml>

参数     是否必须     说明
ToUserName     是     接收方帐号(收到的OpenID)
FromUserName     是     开发者微信号
CreateTime     是     消息创建时间 (整型)
MsgType     是     image
MediaId     是     通过素材管理接口上传多媒体文件,得到的id。

回复语音消息

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<Voice>
<MediaId><![CDATA[media_id]]></MediaId>
</Voice>
</xml>

参数     是否必须     说明
ToUserName     是     接收方帐号(收到的OpenID)
FromUserName     是     开发者微信号
CreateTime     是     消息创建时间戳 (整型)
MsgType     是     语音,voice
MediaId     是     通过素材管理接口上传多媒体文件,得到的id

回复视频消息

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[video]]></MsgType>
<Video>
<MediaId><![CDATA[media_id]]></MediaId>
<Title><![CDATA[title]]></Title>
<Description><![CDATA[description]]></Description>
</Video>
</xml>

参数     是否必须     说明
ToUserName     是     接收方帐号(收到的OpenID)
FromUserName     是     开发者微信号
CreateTime     是     消息创建时间 (整型)
MsgType     是     video
MediaId     是     通过素材管理接口上传多媒体文件,得到的id
Title     否     视频消息的标题
Description     否     视频消息的描述
回复音乐消息

<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>

参数     是否必须     说明
ToUserName     是     接收方帐号(收到的OpenID)
FromUserName     是     开发者微信号
CreateTime     是     消息创建时间 (整型)
MsgType     是     music
Title     否     音乐标题
Description     否     音乐描述
MusicURL     否     音乐链接
HQMusicUrl     否     高质量音乐链接,WIFI环境优先使用该链接播放音乐
ThumbMediaId     否     缩略图的媒体id,通过素材管理接口上传多媒体文件,得到的id
回复图文消息

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>2</ArticleCount>
<Articles>
<item>
<Title><![CDATA[title1]]></Title>
<Description><![CDATA[description1]]></Description>
<PicUrl><![CDATA[picurl]]></PicUrl>
<Url><![CDATA]></Url>
</item>
<item>
<Title><![CDATA[title]]></Title>
<Description><![CDATA[description]]></Description>
<PicUrl><![CDATA[picurl]]></PicUrl>
<Url><![CDATA[url]]></Url>
</item>
</Articles>
</xml>

参数 是否必须 说明
ToUserName 是 接收方帐号(收到的OpenID)
FromUserName 是 开发者微信号
CreateTime 是 消息创建时间 (整型)
MsgType 是 news
ArticleCount 是 图文消息个数,限制为10条以内
Articles 是 多条图文消息信息,默认第一个item为大图,注意,如果图文数超过10,则将会无响应
Title 否 图文消息标题
Description 否 图文消息描述
PicUrl 否 图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200
Url 否 点击图文消息跳转链接 [/code]

View Code

详细可以查看 [url=http://mp.weixin.qq.com/wiki/14/89b871b5466b19b3efa4ada8e577d45e.html]官网


同样,把消息回复中定义的所有消息都有的字段提取出来,封装成一个基类,

这些公有的字段包括:

ToUserName(接收方帐号,用户的OPEN_ID);

FromUserName(开发者的微信号);

CreateTime(消 息的创建时间);

MsgType(消息类型);

FuncFlag(消息的星标标识)。

响应消息的基类BaseMessage:

package com.souvc.weixin.message.resp;

/**
* 类名: BaseMessage </br>
* 描述: 消息基类(公众帐号 -> 普通用户) </br>
* 开发人员: souvc </br>
* 创建时间:  2015-9-30 </br>
* 发布版本:V1.0  </br>
*/
public class BaseMessage {
// 接收方帐号(收到的OpenID)
private String ToUserName;
// 开发者微信号
private String FromUserName;
// 消息创建时间 (整型)
private long CreateTime;
// 消息类型
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;
}
}


(1)回复文本消息

package com.souvc.weixin.message.resp;

/**
* 类名: TextMessage </br>
* 描述: 文本消息 </br>
* 开发人员: souvc </br>
* 创建时间:  2015-9-30 </br>
* 发布版本:V1.0  </br>
*/
public class TextMessage extends BaseMessage {
// 回复的消息内容
private String Content;

public String getContent() {
return Content;
}

public void setContent(String content) {
Content = content;
}
}


(2)回复图片消息

package com.souvc.weixin.message.resp;

/**
* 类名: Image </br>
* 描述: 图片 </br>
* 开发人员:souvc </br>
* 创建时间:  2015-9-30 </br>
* 发布版本:V1.0  </br>
*/
public class Image {

private String MediaId;

public String getMediaId() {
return MediaId;
}

public void setMediaId(String mediaId) {
MediaId = mediaId;
}
}


package com.souvc.weixin.message.resp;

/**
* 类名: ImageMessage </br>
* 描述: 图片消息</br>
* 开发人员: souvc </br>
* 创建时间:  2015-9-30 </br>
* 发布版本:V1.0  </br>
*/
public class ImageMessage extends BaseMessage {

private Image Image;

public Image getImage() {
return Image;
}

public void setImage(Image image) {
Image = image;
}
}


(3)回复语音消息

package com.souvc.weixin.message.resp;

/**
* 类名: Voice </br>
* 描述: 语音model </br>
* 开发人员: souvc </br>
* 创建时间:  2015-9-30 </br>
* 发布版本:V1.0  </br>
*/
public class Voice {
// 媒体文件id
private String MediaId;

public String getMediaId() {
return MediaId;
}

public void setMediaId(String mediaId) {
MediaId = mediaId;
}
}


package com.souvc.weixin.message.resp;

/**
* 类名: VoiceMessage </br>
* 描述: 语音消息</br>
* 开发人员: souvc </br>
* 创建时间:  2015-9-30 </br>
* 发布版本:V1.0  </br>
*/
public class VoiceMessage extends BaseMessage {
// 语音
private Voice Voice;

public Voice getVoice() {
return Voice;
}

public void setVoice(Voice voice) {
Voice = voice;
}
}


(4)回复视频消息

package com.souvc.weixin.message.resp;

/**
* 类名: Video </br>
* 描述: 视频model </br>
* 开发人员: souvc </br>
* 创建时间:  2015-9-30 </br>
* 发布版本:V1.0  </br>
*/
public class Video {
// 媒体文件id
private String MediaId;
// 缩略图的媒体id
private String ThumbMediaId;

public String getMediaId() {
return MediaId;
}

public void setMediaId(String mediaId) {
MediaId = mediaId;
}

public String getThumbMediaId() {
return ThumbMediaId;
}

public void setThumbMediaId(String thumbMediaId) {
ThumbMediaId = thumbMediaId;
}
}


package com.souvc.weixin.message.resp;

/**
* 类名: VideoMessage </br>
* 描述: 视频消息 </br>
* 开发人员: souvc </br>
* 创建时间:  2015-9-30 </br>
* 发布版本:V1.0  </br>
*/
public class VideoMessage extends BaseMessage {
// 视频
private Video Video;

public Video getVideo() {
return Video;
}

public void setVideo(Video video) {
Video = video;
}
}


(5)回复音乐消息

package com.souvc.weixin.message.resp;

/**
* 类名: Music </br>
* 描述: 音乐model </br>
* 开发人员: souvc </br>
* 创建时间:  2015-9-30 </br>
* 发布版本:V1.0  </br>
*/
public class Music {
// 音乐标题
private String Title;
// 音乐描述
private String Description;
// 音乐链接
private String MusicUrl;
// 高质量音乐链接,WIFI环境优先使用该链接播放音乐
private String HQMusicUrl;
// 缩略图的媒体id,通过上传多媒体文件得到的id
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 musicUrl) {
HQMusicUrl = musicUrl;
}

public String getThumbMediaId() {
return ThumbMediaId;
}

public void setThumbMediaId(String thumbMediaId) {
ThumbMediaId = thumbMediaId;
}
}


package com.souvc.weixin.message.resp;

/**
* 类名: MusicMessage </br>
* 描述: 音乐消息 </br>
* 开发人员: souvc </br>
* 创建时间:  2015-9-30 </br>
* 发布版本:V1.0  </br>
*/
public class MusicMessage extends BaseMessage {
// 音乐
private Music Music;

public Music getMusic() {
return Music;
}

public void setMusic(Music music) {
Music = music;
}
}


(6) 回复图文消息

package com.souvc.weixin.message.resp;

/**
* 类名: Article </br>
* 描述: 图文model </br>
* 开发人员: souvc </br>
* 创建时间:  2015-9-30 </br>
* 发布版本:V1.0  </br>
*/
public class Article {
// 图文消息名称
private String Title;
// 图文消息描述
private String Description;
// 图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80
private String PicUrl;
// 点击图文消息跳转链接
private String Url;

public String getTitle() {
return Title;
}

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

public String getDescription() {
return null == Description ? "" : Description;
}

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

public String getPicUrl() {
return null == PicUrl ? "" : PicUrl;
}

public void setPicUrl(String picUrl) {
PicUrl = picUrl;
}

public String getUrl() {
return null == Url ? "" : Url;
}

public void setUrl(String url) {
Url = url;
}
}


package com.souvc.weixin.message.resp;

import java.util.List;

/**
* 类名: NewsMessage </br>
* 描述: 文本消息 </br>
* 开发人员: souvc </br>
* 创建时间:  2015-9-30 </br>
* 发布版本:V1.0  </br>
*/
public class NewsMessage extends BaseMessage {
// 图文消息个数,限制为10条以内
private int ArticleCount;
// 多条图文消息信息,默认第一个item为大图
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;
}
}


封装结束。

为了方便,提供一下这些类的源码:


http://yunpan.cn/cL7KUQ4Q5tMeh 访问密码 75e7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: