用户发送信息,公众账号会提示”该公众号暂时无法提供服务,请稍后再试“。遇到这个问题,我们可以排除一下是否我们返回的数据有问题。 首先代码返回一个空的字符串,如果还是出现这样的提示,请看看签名验证是否失败,调试一下,看看log。 如果没有出现这样的提示,说明我们返回的结果格式有问题。 下面参考一下我返回的错误格式:
<xml>
<toUserName><![CDATA[o_ZKtuBGHyFi2YcpSKlugRAomGrU]]></toUserName>
<fromUserName><![CDATA[gh_940f1b1a6339]]></fromUserName>
<createTime><![CDATA[1432042978676]]></createTime>
<msgType><![CDATA[text]]></msgType>
<funcFlag><![CDATA[0]]></funcFlag>
<content><![CDATA[您发送的是文本消息!]]></content>
</xml>
正确的格式:
<xml>
<ToUserName><![CDATA[o_ZKtuBGHyFi2YcpSKlugRAomGrU]]></ToUserName>
<FromUserName><![CDATA[gh_940f1b1a6339]]></FromUserName>
<CreateTime>![CDATA[1432044259308]</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<FuncFlag><![CDATA[0]]></FuncFlag>
<Content><![CDATA[您发送的是文本消息!]]></Content>
</xml>
发现正确的格式节点首字母是大写的。 经测试,确实存在节点首字母大小写会引起这问题(原因还没知道,那位大神知道请告知一下。谢谢!)
以上都没有问题,看看是否下面问题引起的
开发模式下保证所有内容都有回复,不能匹配到的回复直接回复空字符串,而不是参数Content为空的xml消息,以便让微信服务器知道程序有响应
下面的这个回复就是导致上述错误的原因之一
<xml>
<ToUserName><![CDATA[o_ZKtuBGHyFi2YcpSKlugRAomGrU]]></ToUserName>
<FromUserName><![CDATA[gh_940f1b1a6339]]></FromUserName>
<CreateTime>![CDATA[1432044259308]</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<FuncFlag><![CDATA[0]]></FuncFlag>
<Content><![CDATA[]]></Content>
</xml>