springmvc 如何配置微信公众号服务器controller。

发布于 2022-09-02 15:27:53 字数 1316 浏览 9 评论 0

调用接口发送消息成功,那服务器配置肯定是对的,但是收不到微信推送的消息,比如关注事件。

    @RequestMapping(value = "/", method = {RequestMethod.GET})
    public String wx(@RequestParam String signature, @RequestParam String timestamp, @RequestParam String nonce, String echostr, HttpServletRequest request, HttpServletResponse response) {
        if (!wxMpService.checkSignature(timestamp, nonce, signature)) {
            LOGGER.info("非法请求, signature:{}", signature);
            return "非法请求";
        }

        if (StringUtils.isNotBlank(echostr)) {
            LOGGER.info("验证:{}", echostr);
            return echostr;
        }

        LOGGER.info("wx:", JSON.toJSONString(request));
        return null;
    }

    @RequestMapping(value = "/", method = {RequestMethod.POST})
    public String service( HttpServletRequest request, HttpServletResponse response) throws Exception {
        LOGGER.info("service, request: {},", JSON.toJSONString(request));

        WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(request.getInputStream());
        WxMpXmlOutMessage outMessage = wxMpMessageRouter.route(inMessage);
        if(outMessage == null) {
            LOGGER.info("outMessage is null");
            return "";
        }
        return outMessage.toXml();
    }
    

get请求验证配置是通过的,post请求接不到数据,求问题所在,谢谢了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

楠木可依 2022-09-09 15:27:53

很明显 你指定了 method = {RequestMethod.GET}

2022-09-09 15:27:53

produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

怪我入戏太深 2022-09-09 15:27:53

没试过request.getInputStream是什么效果,我是这么写的:

@ResponseBody
@RequestMapping(value = "/wechat-listener", method = RequestMethod.POST, produces = "application/xml")
public Message onResponse(HttpEntity<RequestMessage> httpEntity) {

    RequestMessage requestMessage = httpEntity.getBody();

    logger.info("from openid: " + requestMessage.getFrom() +
                "\n type: " + requestMessage.getType());

    return requestMessageHandler.handle(requestMessage);

}

刚刚帮你search了一下,用inputStream是不行的,因为spring-mvc已经把它消耗过了。
参考http://hw1287789687.iteye.com/blog/2199295

星軌x 2022-09-09 15:27:53

谢谢大家回答了,问题已经解决了,是因为项目里使用了securityCROS受限,请求被挡住了,写法什么的没问题

画尸师 2022-09-09 15:27:53

您好,我也遇到了和你一样的问题,请问一下具体查找的思路是什么?我没有配置security,那么我接收不到请求应该从哪块下手解决呢?我的邮箱:jtmjx@163.com,QQ:253552550,麻烦您给我点名一下,谢谢。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文