最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
微信公众平台消息接口开发教程 附封装工具实例
时间:2013-08-19 编辑:简简单单 来源:一聚教程网
微信公众平台消息接口
要接收微信平台发送的消息,我们需要先熟悉微信公众平台API中消息接口部分,点此进入,点击后将进入到消息接口指南部分,如下图所示:
在上图左侧可以看到微信公众平台目前开放的接口有三种:消息接口、通用接口和自定义
消息推送和消息回复
下面将主要介绍消息接口。对于消息的接收、响应我们只需要关注上图中的"4 消息推送"和"5 消息回复"就足够了。
我们先来了解接口中的"消息推送"指的是什么,点击"4 消息推送",可以看到接口中的"消息推送"指的是"当普通用户向公众帐号发消息时,微信服务器将POST该消息到填写的URL上",即这里定义的是用户能够发送哪些类型的消息、消息有哪些字段、消息被微信服务器以什么方式转发给我们的公众帐号后台。
消息推送中定义了我们将会接收到的消息类型有5种:文本消息、图片消息、地理位置消息、链接消息和事件推送,其实语音消息我们也能够接收到的,只不过拿不到具体的语音文件而以(需要内测资格才能够获取语音文件)。
接口中的"消息回复"定义了我们能回复给用户的消息类型、消息字段和消息格式,微信公众平台的接口指南中是这样描述的:
上面说到我们能回复给用户的消息有5种,但目前在开发模式下能回复的消息只有3种:文本消息、音乐消息和图文消息,而语音消息和视频消息目前只能在编辑模式下使用。
消息的封装
接下来要做的就是将消息推送(请求)、消息回复(响应)中定义的消息进行封装,建立与之对应的Java类(Java是一门面向对象的编程语言,封装后使用起来更方便),下面的请求消息是指消息推送中定义的消息,响应消息指消息回复中定义的消息。
请求消息的基类
把消息推送中定义的所有消息都有的字段提取出来,封装成一个基类,这些公有的字段包括:ToUserName(开发者微信号)、FromUserName(发送方帐号,OPEN_ID)、CreateTime(消息的创建时间)、MsgType(消息类型)、MsgId(消息ID),封装后基类org.liufeng.course.message.req.BaseMessage的代码如下:
代码如下 | 复制代码 |
package org.liufeng.course.message.req; /** public String getToUserName() { public void setToUserName(String toUserName) { public String getFromUserName() { public void setFromUserName(String fromUserName) { public long getCreateTime() { public void setCreateTime(long createTime) { public String getMsgType() { public void setMsgType(String msgType) { public long getMsgId() { public void setMsgId(long msgId) { |
代码如下 | 复制代码 |
/** public String getContent() { public void setContent(String content) { |
请求消息之图片消息 package org.liufeng.course.message.req;
代码如下 | 复制代码 |
/** public String getPicUrl() { public void setPicUrl(String picUrl) { |
请求消息之地理位置消息 package org.liufeng.course.message.req;
代码如下 | 复制代码 |
/** public String getLocation_X() { public void setLocation_X(String location_X) { public String getLocation_Y() { public void setLocation_Y(String location_Y) { public String getScale() { public void setScale(String scale) { public String getLabel() { public void setLabel(String label) { |
请求消息之链接消息 package org.liufeng.course.message.req;
代码如下 | 复制代码 |
/** public String getTitle() { public void setTitle(String title) { public String getDescription() { public void setDescription(String description) { public String getUrl() { public void setUrl(String url) { |
请求消息之语音消息 package org.liufeng.course.message.req;
代码如下 | 复制代码 |
/** public String getMediaId() { public void setMediaId(String mediaId) { public String getFormat() { public void setFormat(String format) { |
响应消息的基类
同样,把消息回复中定义的所有消息都有的字段提取出来,封装成一个基类,这些公有的字段包括:ToUserName(接收方帐号,用户的OPEN_ID)、FromUserName(开发者的微信号)、CreateTime(消息的创建时间)、MsgType(消息类型)、FuncFlag(消息的星标标识),封装后基类org.liufeng.course.message.resp.BaseMessage的代码如下:
代码如下 | 复制代码 |
package org.liufeng.course.message.resp; /** public String getToUserName() { public void setToUserName(String toUserName) { public String getFromUserName() { public void setFromUserName(String fromUserName) { public long getCreateTime() { public void setCreateTime(long createTime) { public String getMsgType() { public void setMsgType(String msgType) { public int getFuncFlag() { public void setFuncFlag(int funcFlag) { |
代码如下 | 复制代码 |
/** public String getContent() { public void setContent(String content) { /** public Music getMusic() { public void setMusic(Music music) { |
音乐消息中Music类的定义 package org.liufeng.course.message.resp;
代码如下 | 复制代码 |
/** public String getTitle() { public void setTitle(String title) { public String getDescription() { public void setDescription(String description) { public String getMusicUrl() { public void setMusicUrl(String musicUrl) { public String getHQMusicUrl() { public void setHQMusicUrl(String musicUrl) { } |
响应消息之图文消息 package org.liufeng.course.message.resp;
代码如下 | 复制代码 |
import java.util.List; /** public int getArticleCount() { public void setArticleCount(int articleCount) { public List public void setArticles(List /** public String getTitle() { public void setTitle(String title) { public String getDescription() { public void setDescription(String description) { public String getPicUrl() { public void setPicUrl(String picUrl) { public String getUrl() { public void setUrl(String url) { } |
全部消息封装完成后,Eclipse工程中关于消息部分的结构应该与下图保持一致,如果不一致的(类名、属性名称不一致的)请检查后调整一致,因为后面的章节还要介绍如何将微信开发中通用的类方法、与业务无关的工具类封装打成jar包,以后再做微信项目只需要引入该jar包即可
相关文章
- 微信公众平台开发教程之消息的接收与响应实例代码 08-19
- SpringBoot测试配置属性与web启动环境解析 10-24
- vue中将el-switch值true、false改为number类型的1和0解析 10-24
- Vue中的路由配置项meta使用解读 10-24
- SpringBoot自定义bean绑定解析 10-24
- SpringBoot常用计量与bean属性校验和进制数据转换规则解析 10-24