解析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); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |