從文檔上面看,微信公眾號的通信是通過xml形式來傳遞信息的,由此我們需要頻繁地將對象轉成xml,以及將xml轉換成map集合
定義TextMessage用于存儲文本相關信息
-
-
-
-
-
-
public class TextMessage{
-
private String ToUserName;
-
-
private String FromUserName;
-
-
-
-
-
-
-
由于頻繁使用xml和對象的轉換,我們將其抽取工具類
首先引入相關的依賴dom4j以及xStream
-
-
-
-
<artifactId>dom4j</artifactId>
-
-
-
-
<groupId>com.thoughtworks.xstream</groupId>
-
<artifactId>xstream</artifactId>
-
-
工具類MessageUtil
-
-
-
-
-
public class MessageUtil {
-
-
-
-
-
-
-
-
-
public static Map<String,String> xmlToMap(HttpServletRequest request) {
-
Map<String,String> map = new HashMap<>();
-
SAXReader reader = new SAXReader();
-
ServletInputStream in = null;
-
-
in = request.getInputStream();
-
Document doc = reader.read(in);
-
Element root = doc.getRootElement();
-
List<Element> list = root.elements();
-
-
map.put(e.getName(),e.getText());
-
-
-
-
-
-
-
-
-
-
-
-
-
-
public static String textMessageToXml(Object message){
-
XStream xStream = new XStream();
-
xStream.alias("xml",message.getClass());
-
return xStream.toXML(message);
-
-
-
-
-
-
-
-
-
-
-
public static String initText(String toUserName,String fromUserName,String msgType,String content){
-
TextMessage textMessage = new TextMessage();
-
textMessage.setFromUserName(toUserName);
-
textMessage.setToUserName(fromUserName);
-
textMessage.setMsgType(msgType);
-
textMessage.setCreateTime(new Date().getTime());
-
textMessage.setContent(content);
-
return MessageUtil.textMessageToXml(textMessage);
-
-
-
接下來編寫Controller進行測試:
-
-
-
-
-
-
-
public String replyMessage(HttpServletRequest request){
-
Map<String,String> map = MessageUtil.xmlToMap(request);
-
String toUserName = map.get("ToUserName");
-
String fromUserName = map.get("FromUserName");
-
String msgType = map.get("MsgType");
-
String content = map.get("Content");
-
-
if (MessageType.MESSAGE_TEXT.equals(msgType)){
-
-
message = MessageUtil.initText(toUserName,fromUserName,MessageType.MESSAGE_TEXT,content);
-
-
}else if (MessageType.MESSAGE_EVENT.equals(msgType)){
-
-
String event = map.get("Event");
-
if (MessageType.MESSAGE_SUBSCRIBE.equals(event)){
-
message = MessageUtil.initText(toUserName,fromUserName,MessageType.MESSAGE_TEXT,"歡迎關注evan波的公眾號");
-
-
-
-
測試結果:
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。