我的服务号总是返回"该公众号暂时无法提供服务,请稍后再试",后台服务器的日志消息记录为:
微信推送到我的服务器上的xml:
<xml>
<ToUserName>
<![CDATA[gh_e3da2db5c73a]]>
</ToUserName>
<FromUserName>
<![CDATA[oSfASs9eurY6AjWd6ri579kw0Iv4]]>
</FromUserName>
<CreateTime>
1427448817
</CreateTime>
<MsgType>
<![CDATA[text]]>
</MsgType>
<Content>
<![CDATA[怎么回事]]>
</Content>
<MsgId>
6130845986013604396
</MsgId>
</xml>
我自己服务器经过处理后,返回给微信的xml:
<xml>
<ToUserName>
<![CDATA[gh_e3da2db5c73a]]>
</ToUserName>
<FromUserName>
<![CDATA[oSfASs9eurY6AjWd6ri579kw0Iv4]]>
</FromUserName>
<CreateTime>
1427448820140
</CreateTime>
<MsgType>
<![CDATA[text]]>
</MsgType>
<Content>
<![CDATA[不说了]]>
</Content>
</xml>
------------------------------------------------------------------------
通过测试工具测试,消息是可以正常返回的,但在手机上给微信发送消息时,总是提示“该公众号暂时无法提供服务,请稍后再试”,又遇到的博友吗?
网上也找了好多帖子,但是还是没能解决!!
-----------------------------------------------------------------------
贴上两个方法:
// 拼接返回的xml
public static String formatXmlText(String toUserName, String fromUserName,
String text) {
StringBuffer sbf = new StringBuffer();
Date date = new Date();
sbf.append("<xml>");
sbf.append("<ToUserName>");
sbf.append("<![CDATA[");
sbf.append(toUserName);
sbf.append("]]>");
sbf.append("</ToUserName>");
sbf.append("<FromUserName>");
sbf.append("<![CDATA[");
sbf.append(fromUserName);
sbf.append("]]>");
sbf.append("</FromUserName>");
sbf.append("<CreateTime>");
sbf.append(date.getTime());
sbf.append("</CreateTime>");
sbf.append("<MsgType>");
sbf.append("<![CDATA[text]]>");
sbf.append("</MsgType>");
sbf.append("<Content>");
sbf.append("<![CDATA[");
sbf.append(text);
sbf.append("]]>");
sbf.append("</Content>");
sbf.append("</xml>");
return sbf.toString();
}
//向微信服务器返回消息的部分代码,resxml 是formatXmlText()返回的结果
PrintWriter out = response.getWriter();
out.print(resXml);
out.flush();
out.close();
看了你的代码:
微信推送到你服务器上的:ToUserName---<![CDATA[gh_e3da2db5c73a]]>//获取公众号原始ID
FromUserName---<![CDATA[oSfASs9eurY6AjWd6ri579kw0Iv4]]>//获取微信用户OpenID
然后你返回给微信xml数据:
<ToUserName>{公众号原始ID,即你收到的ToUserName}</ToUserName>
<FromUserName>{微信用户的OpenID,即收到的FromUserName}</FromUserName>
返回给微信公众平台的{发送者}和{接收者}数据应该和微信推送到服务器上的{发送者}和{接受者}这两者的是[相反的]
想想是不是,开始用户是发送者,然后用户时接收者.
噢噢,对着呢,谢谢!
哎,太马虎了,没有认真看官方文档!
@jianglongwei: 不用谢,曾经接入的时候和你范过一样的错!