- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微信公众号开发普通消息的接收和回复
一、微信公众平台消息管理接口介绍
要实现微信公众号的普通消息的接收和回复,我们需要先熟悉微信公众平台 API 中消息接口部分,进入到【消息管理】
部分,如下图所示:
对于普通消息的接收和回复我们只需要关注上图中的接收消息——接收普通消息和发送消息——被动回复消息
1.1、消息接收
先来说说接收消息, 当普通微信用户向公众账号发消息时,微信服务器会先接收到用户发送的消息,然后将用户消息按
照指定的 XML 格式组装好数据,最后 POST 消息的 XML 数据包到开发者填写的 URL 上。
接收到的普通消息的消息类型目前有以下几种:
1 文本消息
2 图片消息
3 语音消息
4 视频消息
5 小视频消息
6 地理位置消息
7 链接消息
1 / 25
每一种消息类型都有其指定的 XML 数据格式,这 7 种消息的 xml 格式请到官方文档查看,有具体的格式定义和属性说
明。格式很简单,基本共有属性包括 ToUserName、FromUserName、CreateTime、MsgType、MsgId ,并且每种类
型有自己特殊的属性。
接收消息的过程其实就是获取 post 请求的这个 xml ,然后对这个xml 进行分析的过程。post 请求的入口还是之前提到
的微信公众号接入的那个地址,整个公众号的所有请求都会走这个入口,只是接入时是 get 请求,其它情况下是 post 请求。
1.2、消息回复
微信服务器在将用户的消息发给公众号的开发者服务器地址后,会等待开发者服务器回复响应消息。微信服务器在五秒
内收不到响应会断掉连接,并且重新发起请求,总共重试三次。
假如服务器无法保证在五秒内处理并回复,必须做出下述回复,这样微信服务器才不会对此作任何处理,并且不会发起
重试(这种情况下,可以使用客服消息接口进行异步回复),否则,将出现严重的错误提示。详见下面说明:
1、(推荐方式)直接回复 success
2、直接回复空串(指字节长度为 0 的空字符串,而不是XML 结构体中 content 字段的内容为空)
一旦遇到以下情况,微信都会在公众号会话中,向用户下发系统提示 “该公众号暂时无法提供服务,请稍后再试” :
1、开发者在 5 秒内未回复任何内容
2、开发者回复了异常数据,比如JSON 数据等
另外,请注意,回复图片等多媒体消息时需要预先通过素材管理接口上传临时素材到微信服务器 ,可以使用素材管理中
的临时素材,也可以使用永久素材。
消息回复目前支持回复文本、图片、图文、语音、视频、音乐,每一种类型的消息都有特定的 XML 数据格式。这几种
回复消息的xml 数据格式请参考官方文档 ,有具体的格式定义和属性说明。格式很简单,基本共有属性包括 ToUserName、
FromUserName、CreateTime、MsgType ,并且每种类型有自己特殊的属性。
二、微信公众号的普通消息的接收和回复
2.1、接收消息
接收消息和被动回复消息这两个动作是不分家的,这本来就是一个交互场景,一般情况就是公众号通过分析接收到的消
息,会给出对应的回复。
之前说过了,接收消息的过程其实就是获取微信服务器通过 post 请求的发送给我们公众号服务器的 xml 数据,然后我
们的公众号服务器再对这个 xml 进行解析处理的过程。为了方便解析 XML 数据,我们借助于 dom4j ,dom4j 是一个十分优
秀的 JavaXML API ,具有性能优异、功能强大和极其易使用的特点,是用来读写XML 文件的。针对微信服务器发来的 xml
请求数据,我们写一个 parseXml 方法来处理,parseXml 方法的代码如下:
1 /**
2 * 解析微信发来的请求(XML )
3 *
4 * @param request 封装了请求信息的 HttpServletRequest 对象
5 * @return map 解析结果
6 * @throws Exception
2 / 25
7 */
8 public static MapString, String parseXml(HttpServletRequest
文档评论(0)