java - springmvc 如何配置微信公众号服务器controller。
迷茫
迷茫 2017-04-17 17:53:06
0
5
1001

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

    @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请求接不到数据,求问题所在,谢谢了

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

membalas semua(5)
迷茫

Jelas sekali anda menetapkan kaedah = {RequestMethod.GET}

伊谢尔伦

produces: Menentukan jenis kandungan yang akan dikembalikan Ia hanya akan dikembalikan jika jenis (Terima) dalam pengepala permintaan request mengandungi jenis

迷茫

Saya belum mencuba kesan request.getInputStream Inilah yang saya tulis:

@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);

}

Saya baru sahaja mencarinya untuk anda. Tidak boleh menggunakan inputStream kerana spring-mvc telah menggunakannya.
Rujukanhttp://hw1287789687.iteye.com/blog/2199295

迷茫

Terima kasih atas jawapan anda Masalahnya telah diselesaikan Sebabnya ialah security digunakan dalam projek adalah terhad dan permintaan disekat CROS

迷茫

Helo, saya juga mengalami masalah yang sama seperti anda. Saya belum mengkonfigurasi keselamatan, jadi di manakah saya harus mula menyelesaikan masalah apabila saya tidak dapat menerima permintaan? E-mel saya: jtmjx@163.com, QQ: 253552550, sila namakan saya, terima kasih.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan