收藏
回答

关注事件或者取消关注事件消息体是空的

https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html,

收到的关注事件或者取消关注事件消息体是空的,导致接收的服务报了下面的错误

org.dom4j.DocumentException: Error on line 1 of document  : Premature end of file. Nested exception:

接收关注/取消关注事件的代码:

public static Map<String, String> parseXml(HttpServletRequest request, WeChatConfig config) throws Exception {

        // 将解析结果存储在HashMap中

        Map<String, String> map = new HashMap<String, String>();

        log.info("###########################################");

        // 从request中取得输入流

try(InputStreamReader inputStreamReader = new InputStreamReader(request.getInputStream());

BufferedReader bufferedReader = new BufferedReader(inputStreamReader)){

StringBuilder stringBuilder = new StringBuilder();

String line;

while((line = bufferedReader.readLine()) != null){

stringBuilder.append(line);

}

log.info("from微信:{}, length:{}", stringBuilder, stringBuilder.length());

}


        try(InputStream inputStream = request.getInputStream()) {

            // 读取输入流

            SAXReader reader = new SAXReader();

            Document document = reader.read(inputStream);


            String xmlBody = document.asXML();

log.info("xmlBody:{}", xmlBody);


if(StringUtils.isEmpty(xmlBody.trim())){

throw new ThirdException("请求数据为空!");

}


            if(StringUtils.isNotEmpty(xmlBody) && xmlBody.contains("Encrypt")){

                //解密请求消息体

                String nXmlString = decryptMsg(request, xmlBody,config);

                document = DocumentHelper.parseText(nXmlString);

            }


            // 得到xml根元素

            Element root = document.getRootElement();

            // 得到根元素的所有子节点


            @SuppressWarnings("unchecked")

            List<Element> elementList = root.elements();


            // 遍历所有子节点

            for (Element e : elementList)

                map.put(e.getName(), e.getText());

        }

        return map;

    }

代码 Document document = reader.read(inputStream); 处报了上面的错误,from微信打印了8个空白字符串


回答关注问题邀请回答
收藏

2 个回答

  • 水中月
    水中月
    07-04

    这个有进展吗?遇到同样的问题了

    07-04
    有用 1
    回复
  • 公众号技术运营专员-livia
    公众号技术运营专员-livia
    2023-12-04

    你好,是事件通知吗

    2023-12-04
    有用
    回复 3
    • 泠小轩
      泠小轩
      05-06
      我也遇到类似问题,是关注事件通知
      05-06
      回复
    • KID
      KID
      06-04
      我也遇到这这个问题
      06-04
      回复
    • 破茧
      破茧
      09-12
      请问同样的问题是怎么回事,正常来说关注公众号会推送xml事件体,但是解析不出xml格式出来,微信通知的事件体是一个数据的字符串,不是xml格式的消息体
      09-12
      回复
登录 后发表内容