首页 新闻 会员 周边

微信公众平台-该公众号暂时无法提供服务,请稍后再试

1
悬赏园豆:10 [已解决问题] 解决于 2015-03-27 19:53

我的服务号总是返回"该公众号暂时无法提供服务,请稍后再试",后台服务器的日志消息记录为:

微信推送到我的服务器上的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();

jianglongwei的主页 jianglongwei | 初学一级 | 园豆:178
提问于:2015-03-27 17:42
< >
分享
最佳答案
1

看了你的代码:

微信推送到你服务器上的:ToUserName---<![CDATA[gh_e3da2db5c73a]]>//获取公众号原始ID

            FromUserName---<![CDATA[oSfASs9eurY6AjWd6ri579kw0Iv4]]>//获取微信用户OpenID

然后你返回给微信xml数据:

            <ToUserName>{公众号原始ID,即你收到的ToUserName}</ToUserName>

            <FromUserName>{微信用户的OpenID,即收到的FromUserName}</FromUserName>

返回给微信公众平台的{发送者}和{接收者}数据应该和微信推送到服务器上的{发送者}和{接受者}这两者的是[相反的]

 

想想是不是,开始用户是发送者,然后用户时接收者.

收获园豆:10
心物亦水 | 初学一级 |园豆:13 | 2015-03-27 18:30

噢噢,对着呢,谢谢!

哎,太马虎了,没有认真看官方文档!

jianglongwei | 园豆:178 (初学一级) | 2015-03-27 19:50

@jianglongwei: 不用谢,曾经接入的时候和你范过一样的错!

心物亦水 | 园豆:13 (初学一级) | 2015-03-27 20:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册