第三篇 :微信公众平台开发实战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
相关文章推荐
- 经方败案群崩漏专题1(2015年9月) “崩漏治疗经验”微信语音整理版
- android仿微信联系人索引列表
- 微信IOT开发
- 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发
- flask+BAE快速搭建微信公众号
- 微信开发注意事项
- 第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备
- 微信公众号发不出信息
- 开放平台:微信 for iOS
- 微信公众号开发系列-开发环境要求和准备工作
- 每天一个小程序——顺序表的基本操作!
- 微信音乐回复时出现“链接无效,无法播放”的情况
- 使用微信企业号群发员工工资条
- 微信、QQ浏览器X5内核问题汇总
- 微信公众平台开发问答
- 微信助力活动开发
- C基本小程序
- 快速集成微信支付和支付宝支付
- 窃取网页登录信息的小程序
- iOS9 URL Schema 白名单 微信