Rumah > Soal Jawab > teks badan
调用接口发送消息成功,那服务器配置肯定是对的,但是收不到微信推送的消息,比如关注事件。
@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请求接不到数据,求问题所在,谢谢了
迷茫2017-04-17 17:55:06
没试过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
迷茫2017-04-17 17:55:06
您好,我也遇到了和你一样的问题,请问一下具体查找的思路是什么?我没有配置security,那么我接收不到请求应该从哪块下手解决呢?我的邮箱:jtmjx@163.com,QQ:253552550,麻烦您给我点名一下,谢谢。