回调请求进来了,但是return完,公众号没消息推过来。
@PostMapping("")
public String handleEvent(@RequestBody String xmlData) throws Exception {
// 解析XML
Document document = DocumentHelper.parseText(xmlData);
Element root = document.getRootElement();
// 获取关键字段
String msgType = root.elementText("MsgType");
String event = root.elementText("Event");
String fromUser = root.elementText("FromUserName");
String toUser = root.elementText("ToUserName");
// 处理关注事件
if ("event".equals(msgType) && "subscribe".equals(event)) {
return buildWelcomeMessage(fromUser, toUser);
}
return "success";
}
/**
* 构建欢迎消息XML
*/
private String buildWelcomeMessage(String fromUser, String toUser) {
return String.format(
"<xml>" +
"<ToUserName><![CDATA[%s]]></ToUserName>" +
"<FromUserName><![CDATA[%s]]></FromUserName>" +
"<CreateTime>%d</CreateTime>" +
"<MsgType><![CDATA[text]]></MsgType>" +
"<Content><![CDATA[欢迎关注!感谢您的支持!]]></Content>" +
"</xml>",
fromUser, toUser, System.currentTimeMillis() / 1000
);
}

已解决,问题出在响应体
public String handleEvent(@RequestBody String xmlData) throws Exception {不能直接返回String字符串类型,需要有code:200 body: xml消息