微信公众平台开发[3]-开发模式-响应消息
2013-08-16 13:56
281 查看
继续上篇文章。
微信服务器已将消息内容POST给我方服务器了,我们要响应其POST请求,并且按照对应的格式回复,即可发送请求。
响应消息格式:(以文本格式为实例,其他格式请参照
微信官方api)
响应消息代码:
回复消息需要注意以下几点:
1、文本内容不能过长2048字节,UTF-8一个中文汉字是3个字节,请自己尝试,不做深入说明。
2、响应时间不能超过5秒,就是说,当微信服务器端发来一个request请求时,我方服务器端必须在5秒内做出response响应。
3、响应时的ToUserName FromUserName不要搞反了。
4、有时因微信服务器问题会导致服务器响应了请求,却无法发送到用户方,这种情况在微信公众平台刚开放的时候时常会有,现在已经趋于稳定,遇到这种情况只能等等看(当然在确认自己代码没问题的情况下)。
我已经介绍了“接入、接收消息、响应消息”,以下是完整的一套代码。
微信服务器已将消息内容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;
}
%>
相关文章推荐
- 微信公众平台消息接口开发(2)启用开发模式
- 微信公众平台消息接口开发(29)校验签名与消息响应合并
- 微信公众平台消息接口开发(29)校验签名与消息响应合并
- 微信公众平台开发[7]-开发模式-高级功能-主动发消息
- PHP-微信公众平台开发-接收用户输入消息类型并响应
- 微信公众平台消息接口开发之校验签名与消息响应合并
- 使用Java语言开发微信公众平台(四)——图文消息的发送与响应
- 微信公众平台消息接口开发(2)你的服务器没有正确响应Token验证的解决方法
- 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装
- 微信公众平台消息接口开发(2)启用开发模式
- 微信公众平台开发模式 微信 语音识别 公众平台 消息接口 语音识别
- 研究微信公众平台开发模式下的菜单加消息处理
- 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装
- 微信公众平台消息接口开发(29)校验签名与消息响应合并
- 微信公众平台开发【二】 消息的接收和响应
- PHP-微信公众平台开发-接收用户输入消息类型并响应
- 微信公众平台 开发模式消息申请
- 微信公众平台消息接口开发(29)校验签名与消息响应合并
- 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装
- PHP-微信公众平台开发-接收用户输入消息类型并响应