解析XML请求(安全模式)
发布时间:2020-12-16 08:38:31 所属栏目:百科 来源:网络整理
导读:安全模式下的消息格式: new_msg=xml ToUserName![CDATA[toUser]]/ToUserName Encrypt![CDATA[msg_encrypt]]/Encrypt/xml 现有消息格式: msg=xml ToUserName![CDATA[toUser]]/ToUserName FromUserName![CDATA[fromUser]]/FromUserName CreateTime12345678/C
|
安全模式下的消息格式: new_msg=
<xml>
<ToUserName><![CDATA[toUser]]</ToUserName>
<Encrypt><![CDATA[msg_encrypt]]</Encrypt>
</xml>
现有消息格式: msg= <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[你好]]></Content> </xml> new_msg= <xml> <Encrypt><![CDATA[msg_encrypt]]></Encrypt> <MsgSignature><![CDATA[msg_signature]]></MsgSignature> <TimeStamp>timestamp</TimeStamp> <Nonce><![CDATA[nonce]]></Nonce> </xml> 代码如下:
public static HashMap<String,String> parseXMLCrypt(HttpServletRequest request) throws Exception {
HashMap<String,String> map = new HashMap<String,String>();
/**
* 第1步:获取加密的xml文本
*/
InputStream is = request.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;
StringBuffer buffer = new StringBuffer();
while((line = br.readLine()) != null) {
buffer.append(line);
}
/**
* 第2步:解密
*/
String msgSignature = request.getParameter("msg_signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String fromXML = MessageUtil.getWxCrypt().decryptMsg(msgSignature,timestamp,nonce,buffer.toString());
/**
* 第3步:解析xml文本
*/
// 通过IO获得Document
Document doc = DocumentHelper.parseText(fromXML);
// 得到xml的根节点
Element root = doc.getRootElement();
recursiveParseXML(root,map);
return map;
}
public static void recursiveParseXML(Element root,HashMap<String,String> map) {
// 得到根节点的子节点列表
List<Element> elementList = root.elements();
if (elementList.size() == 0) {
map.put(root.getName(),root.getTextTrim());
} else {
for (Element e : elementList) {
recursiveParseXML(e,map);
}
}
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
