微信公众平台开发[3]-开发模式-响应消息
来源:互联网 发布:北京医院网络文案招聘 编辑:程序博客网 时间:2024/04/25 12:26
继续上篇文章。
微信服务器已将消息内容POST给我方服务器了,我们要响应其POST请求,并且按照对应的格式回复,即可发送请求。
响应消息格式:(以文本格式为实例,其他格式请参照 微信官方api)
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[你好]]></Content></xml>
响应消息代码:
if("POST".equals(request.getMethod())){//接收输入流 数据String weiXinXML = org.apache.commons.io.IOUtils.toString(request.getReader());System.out.println( weiXinXML );String ToUserName = weiXinXML.substring(weiXinXML.indexOf("<ToUserName>") + "<ToUserName>".length(), weiXinXML.indexOf("</ToUserName>"));String FromUserName = weiXinXML.substring(weiXinXML.indexOf("<FromUserName>") + "<FromUserName>".length(), weiXinXML.indexOf("</FromUserName>"));String reXML = "<xml>";reXML += "<ToUserName>" + FromUserName + "</ToUserName>";reXML += "<FromUserName>" + ToUserName + "</FromUserName>";reXML += "<CreateTime>"+new java.util.Date().getTime()+"</CreateTime>";reXML += "<MsgType><![CDATA[text]]></MsgType>";reXML += "<Content><![CDATA[你好]]></Content>";reXML += "<FuncFlag>0</FuncFlag>";reXML += "</xml>";response.setContentType("text/html;charset=UTF-8");response.getWriter().write(reXML);response.getWriter().flush();response.getWriter().close();}
回复消息需要注意以下几点:
1、文本内容不能过长2048字节,UTF-8一个中文汉字是3个字节,请自己尝试,不做深入说明。
2、响应时间不能超过5秒,就是说,当微信服务器端发来一个request请求时,我方服务器端必须在5秒内做出response响应。
3、响应时的ToUserName FromUserName不要搞反了。
4、有时因微信服务器问题会导致服务器响应了请求,却无法发送到用户方,这种情况在微信公众平台刚开放的时候时常会有,现在已经趋于稳定,遇到这种情况只能等等看(当然在确认自己代码没问题的情况下)。
我已经介绍了“接入、接收消息、响应消息”,以下是完整的一套代码。
<%@ page language="java" pageEncoding="utf-8"%><!--思路:如果是GET请求返回需要验证的参数(这里不讨论自己服务器SHA1加密验证)、如果是POST请求拼装返回数据--><%if("POST".equals(request.getMethod())){//接收输入流 数据String weiXinXML = org.apache.commons.io.IOUtils.toString(request.getReader());System.out.println( weiXinXML );String ToUserName = weiXinXML.substring(weiXinXML.indexOf("<ToUserName>") + "<ToUserName>".length(), weiXinXML.indexOf("</ToUserName>"));String FromUserName = weiXinXML.substring(weiXinXML.indexOf("<FromUserName>") + "<FromUserName>".length(), weiXinXML.indexOf("</FromUserName>"));String reXML = "<xml>";reXML += "<ToUserName>" + FromUserName + "</ToUserName>";reXML += "<FromUserName>" + ToUserName + "</FromUserName>";reXML += "<CreateTime>"+new java.util.Date().getTime()+"</CreateTime>";reXML += "<MsgType><![CDATA[text]]></MsgType>";reXML += "<Content><![CDATA[你好]]></Content>";reXML += "<FuncFlag>0</FuncFlag>";reXML += "</xml>";response.setContentType("text/html;charset=UTF-8");response.getWriter().write(reXML);response.getWriter().flush();response.getWriter().close();}else if("GET".equals(request.getMethod())){//验证链接response.setContentType("text/html;charset=UTF-8");response.getWriter().write(request.getParameter("echostr"));response.getWriter().flush();response.getWriter().close();}else{return;}%>
- 微信公众平台开发[3]-开发模式-响应消息
- 微信公众平台开发[2]-开发模式-接收消息
- 微信公众平台 开发模式消息申请
- 微信公众号三方平台开发【代微信公众号接收消息事件并响应】
- 微信公众平台消息接口开发
- 微信公众平台开发 模版消息
- 微信公众平台消息接口开发(29)校验签名与消息响应合并
- 微信公众平台消息接口开发(29)校验签名与消息响应合并
- 微信公众平台开发:高级篇(微信公众平台开发模式消息接口API文档)
- 微信公众平台消息接口开发(3)
- 微信公众平台开发(3)-回复消息
- 微信公众平台开发【二】 消息的接收和响应
- PHP-微信公众平台开发-接收用户输入消息类型并响应
- 微信公众平台开发模式消息接口开发 从Hello2BizUser文本到subscribe事件
- 微信公众平台开发[7]-开发模式-高级功能-主动发消息
- 微信公众平台消息接口开发(2)启用开发模式
- 微信公众平台消息接口开发(2)启用开发模式
- 微信公众平台开发【发送消息】被动回复消息
- 联级菜单的CSS与JS
- CF 245D Restoring Table
- 安装Android Studio提示找不到JDK解决方法
- POJ 2402 Palindrome Numbers
- ubuntu下利用crosstool制作交叉编译工具
- 微信公众平台开发[3]-开发模式-响应消息
- 01-cookie初步认识
- linux下i386平台gpio端口操作
- 增量备份
- android代码参考
- Spring受管Bean依赖注入(设值注入)
- 简明 Vim 练级攻略
- 谷歌开源Gumbo:纯C语言实现的HTML5解析库
- 聚类