From d1f26741bddf6f512d62c0100d42c52be8d37e76 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 06 二月 2021 15:35:40 +0800 Subject: [PATCH] 工具类优化 --- utils/src/main/java/org/yeshi/utils/wx/WXUtil.java | 455 +++++++++++++++++++++++++++++--------------------------- 1 files changed, 233 insertions(+), 222 deletions(-) diff --git a/utils/src/main/java/org/yeshi/utils/wx/WXUtil.java b/utils/src/main/java/org/yeshi/utils/wx/WXUtil.java index 0d91cfb..51179dc 100644 --- a/utils/src/main/java/org/yeshi/utils/wx/WXUtil.java +++ b/utils/src/main/java/org/yeshi/utils/wx/WXUtil.java @@ -1,222 +1,233 @@ -package org.yeshi.utils.wx; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; - -import javax.servlet.http.HttpServletRequest; - -import org.dom4j.Document; -import org.dom4j.Element; -import org.dom4j.io.SAXReader; -import org.yeshi.utils.HttpUtil; -import org.yeshi.utils.StringUtil; - -import com.qq.weixin.mp.aes.AesException; -import com.qq.weixin.mp.aes.WXBizMsgCrypt; - -import net.sf.json.JSONObject; - -public class WXUtil { - - public static String getContent(HttpServletRequest req) { - try { - byte[] buffer = new byte[2048]; - int readBytes = 0; - StringBuilder stringBuilder = new StringBuilder(); - while ((readBytes = req.getInputStream().read(buffer)) > 0) { - stringBuilder.append(new String(buffer, 0, readBytes)); - } - return stringBuilder.toString(); - } catch (Exception e) { - - } - return null; - } - - @SuppressWarnings("unchecked") - public static Map<String, String> parseXML(HttpServletRequest req) { - - SAXReader reader = new SAXReader(); - try { - byte[] buffer = new byte[2048]; - int readBytes = 0; - StringBuilder stringBuilder = new StringBuilder(); - while ((readBytes = req.getInputStream().read(buffer)) > 0) { - stringBuilder.append(new String(buffer, 0, readBytes)); - } - InputStream inputStream = new ByteArrayInputStream(stringBuilder.toString().getBytes()); - Map<String, String> map = new HashMap<String, String>(); - Document document = reader.read(inputStream); - Element root = document.getRootElement(); - // 寰楀埌鏍瑰厓绱犵殑鎵�鏈夊瓙鑺傜偣 - List<Element> elementList = root.elements(); - // 閬嶅巻鎵�鏈夊瓙鑺傜偣 - for (Element e : elementList) - map.put(e.getName(), e.getText()); - inputStream.close(); - inputStream = null; - return map; - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - // 鑾峰彇寰俊鍥炶皟鐨勫唴瀹� - public static String getWXXMLBody(HttpServletRequest req) { - byte[] buffer = new byte[2048]; - int readBytes = 0; - StringBuilder stringBuilder = new StringBuilder(); - try { - while ((readBytes = req.getInputStream().read(buffer)) > 0) { - stringBuilder.append(new String(buffer, 0, readBytes)); - } - } catch (Exception e) { - } - return stringBuilder.toString(); - } - - @SuppressWarnings("unchecked") - public static Map<String, String> parseXML(String content, String msgSignature, String timeStamp, String nonce, - String token, String encodingAesKey, String appId) { - SAXReader reader = new SAXReader(); - try { - String result = ""; - try { - WXBizMsgCrypt pc = new WXBizMsgCrypt(token, encodingAesKey, appId); - result = pc.DecryptMsg(msgSignature, timeStamp, nonce, content); - } catch (AesException e1) { - e1.printStackTrace(); - } - - InputStream inputStream = new ByteArrayInputStream(result.getBytes()); - Map<String, String> map = new HashMap<String, String>(); - Document document = reader.read(inputStream); - Element root = document.getRootElement(); - // 寰楀埌鏍瑰厓绱犵殑鎵�鏈夊瓙鑺傜偣 - List<Element> elementList = root.elements(); - // 閬嶅巻鎵�鏈夊瓙鑺傜偣 - for (Element e : elementList) - map.put(e.getName(), e.getText()); - inputStream.close(); - inputStream = null; - - return map; - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - @SuppressWarnings("unchecked") - public static Map<String, String> parseXML(HttpServletRequest req, String pwd) { - SAXReader reader = new SAXReader(); - try { - byte[] buffer = new byte[2048]; - int readBytes = 0; - StringBuilder stringBuilder = new StringBuilder(); - while ((readBytes = req.getInputStream().read(buffer)) > 0) { - stringBuilder.append(new String(buffer, 0, readBytes)); - } - System.out.println(stringBuilder.toString()); - InputStream inputStream = new ByteArrayInputStream(stringBuilder.toString().getBytes()); - Map<String, String> map = new HashMap<String, String>(); - Document document = reader.read(inputStream); - Element root = document.getRootElement(); - // 寰楀埌鏍瑰厓绱犵殑鎵�鏈夊瓙鑺傜偣 - List<Element> elementList = root.elements(); - // 閬嶅巻鎵�鏈夊瓙鑺傜偣 - for (Element e : elementList) - map.put(e.getName(), e.getText()); - inputStream.close(); - inputStream = null; - return map; - } catch (Exception e) { - e.printStackTrace(); - } - - return null; - } - - @SuppressWarnings("unchecked") - public static Map<String, String> parseXML(String data) { - SAXReader reader = new SAXReader(); - try { - InputStream inputStream = new ByteArrayInputStream(data.getBytes("UTF-8")); - Map<String, String> map = new HashMap<String, String>(); - Document document = reader.read(inputStream); - Element root = document.getRootElement(); - // 寰楀埌鏍瑰厓绱犵殑鎵�鏈夊瓙鑺傜偣 - List<Element> elementList = root.elements(); - // 閬嶅巻鎵�鏈夊瓙鑺傜偣 - for (Element e : elementList) - map.put(e.getName(), e.getText()); - inputStream.close(); - inputStream = null; - return map; - } catch (Exception e) { - e.printStackTrace(); - } - - return null; - } - - public static String loadWXMessage(Map<String, String> map) { - Set<String> set = map.keySet(); - Iterator<String> its = set.iterator(); - String xml = "<xml>"; - while (its.hasNext()) { - String key = its.next(); - String value = map.get(key); - xml += String.format("<%1$s><![CDATA[%2$s]]></%3$s>", key, value, key); - } - xml += "</xml>"; - return xml; - } - - public static String getSignMD5(Map<String, String> map, String k) { - Map<String, String> tm = new TreeMap<String, String>(); - tm.putAll(map); - Set<String> set = tm.keySet(); - Iterator<String> its = set.iterator(); - String result = ""; - while (its.hasNext()) { - String key = its.next(); - String val = tm.get(key); - result += key + "=" + val + "&"; - } - result += "key=" + k; - return StringUtil.Md5(result).toUpperCase(); - } - - public static String getAcessToken(String appId, String appSecret) { - String tokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId - + "&secret=" + appSecret; - String token = HttpUtil.get(tokenUrl); - String access_token = JSONObject.fromObject(token).optString("access_token"); - return access_token; - } - - // 鑾峰彇璇︾粏鐨勭敤鎴蜂俊鎭� - public static JSONObject getDetailGZUserInfo(String openId, String accessToken) { - String url = String.format("https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=zh_CN", - accessToken, openId); - String result = HttpUtil.get(url); - return JSONObject.fromObject(result); - } - - // 鍒涘缓鑿滃崟 - public static void createMenu(String accessToken, JSONObject root) { - HttpUtil.post("https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" + accessToken); - // 鍒涘缓鑿滃崟鍐� - String url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + accessToken; - String result = HttpUtil.post(url, root.toString()); - } - -} +package org.yeshi.utils.wx; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; + +import javax.servlet.http.HttpServletRequest; + +import org.dom4j.Document; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; +import org.yeshi.utils.HttpUtil; +import org.yeshi.utils.StringUtil; + +import com.qq.weixin.mp.aes.AesException; +import com.qq.weixin.mp.aes.WXBizMsgCrypt; + +import net.sf.json.JSONObject; + +public class WXUtil { + + public static String getContent(HttpServletRequest req) { + try { + byte[] buffer = new byte[2048]; + int readBytes = 0; + StringBuilder stringBuilder = new StringBuilder(); + while ((readBytes = req.getInputStream().read(buffer)) > 0) { + stringBuilder.append(new String(buffer, 0, readBytes)); + } + return stringBuilder.toString(); + } catch (Exception e) { + + } + return null; + } + + @SuppressWarnings("unchecked") + public static Map<String, String> parseXML(HttpServletRequest req) { + + SAXReader reader = new SAXReader(); + try { + byte[] buffer = new byte[2048]; + int readBytes = 0; + StringBuilder stringBuilder = new StringBuilder(); + while ((readBytes = req.getInputStream().read(buffer)) > 0) { + stringBuilder.append(new String(buffer, 0, readBytes)); + } + InputStream inputStream = new ByteArrayInputStream(stringBuilder.toString().getBytes()); + Map<String, String> map = new HashMap<String, String>(); + Document document = reader.read(inputStream); + Element root = document.getRootElement(); + // 寰楀埌鏍瑰厓绱犵殑鎵�鏈夊瓙鑺傜偣 + List<Element> elementList = root.elements(); + // 閬嶅巻鎵�鏈夊瓙鑺傜偣 + for (Element e : elementList) + map.put(e.getName(), e.getText()); + inputStream.close(); + inputStream = null; + return map; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + // 鑾峰彇寰俊鍥炶皟鐨勫唴瀹� + public static String getWXXMLBody(HttpServletRequest req) { + byte[] buffer = new byte[2048]; + int readBytes = 0; + StringBuilder stringBuilder = new StringBuilder(); + try { + while ((readBytes = req.getInputStream().read(buffer)) > 0) { + stringBuilder.append(new String(buffer, 0, readBytes)); + } + } catch (Exception e) { + } + return stringBuilder.toString(); + } + + @SuppressWarnings("unchecked") + public static Map<String, String> parseXML(String content, String msgSignature, String timeStamp, String nonce, + String token, String encodingAesKey, String appId) { + SAXReader reader = new SAXReader(); + try { + String result = ""; + try { + WXBizMsgCrypt pc = new WXBizMsgCrypt(token, encodingAesKey, appId); + result = pc.DecryptMsg(msgSignature, timeStamp, nonce, content); + } catch (AesException e1) { + e1.printStackTrace(); + } + + InputStream inputStream = new ByteArrayInputStream(result.getBytes()); + Map<String, String> map = new HashMap<String, String>(); + Document document = reader.read(inputStream); + Element root = document.getRootElement(); + // 寰楀埌鏍瑰厓绱犵殑鎵�鏈夊瓙鑺傜偣 + List<Element> elementList = root.elements(); + // 閬嶅巻鎵�鏈夊瓙鑺傜偣 + for (Element e : elementList) + map.put(e.getName(), e.getText()); + inputStream.close(); + inputStream = null; + + return map; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @SuppressWarnings("unchecked") + public static Map<String, String> parseXML(HttpServletRequest req, String pwd) { + SAXReader reader = new SAXReader(); + try { + byte[] buffer = new byte[2048]; + int readBytes = 0; + StringBuilder stringBuilder = new StringBuilder(); + while ((readBytes = req.getInputStream().read(buffer)) > 0) { + stringBuilder.append(new String(buffer, 0, readBytes)); + } + System.out.println(stringBuilder.toString()); + InputStream inputStream = new ByteArrayInputStream(stringBuilder.toString().getBytes()); + Map<String, String> map = new HashMap<String, String>(); + Document document = reader.read(inputStream); + Element root = document.getRootElement(); + // 寰楀埌鏍瑰厓绱犵殑鎵�鏈夊瓙鑺傜偣 + List<Element> elementList = root.elements(); + // 閬嶅巻鎵�鏈夊瓙鑺傜偣 + for (Element e : elementList) + map.put(e.getName(), e.getText()); + inputStream.close(); + inputStream = null; + return map; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + @SuppressWarnings("unchecked") + public static Map<String, String> parseXML(String data) { + SAXReader reader = new SAXReader(); + try { + InputStream inputStream = new ByteArrayInputStream(data.getBytes("UTF-8")); + Map<String, String> map = new HashMap<String, String>(); + Document document = reader.read(inputStream); + Element root = document.getRootElement(); + // 寰楀埌鏍瑰厓绱犵殑鎵�鏈夊瓙鑺傜偣 + List<Element> elementList = root.elements(); + // 閬嶅巻鎵�鏈夊瓙鑺傜偣 + for (Element e : elementList) + map.put(e.getName(), e.getText()); + inputStream.close(); + inputStream = null; + return map; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + public static String loadWXMessage(Map<String, String> map) { + Set<String> set = map.keySet(); + Iterator<String> its = set.iterator(); + String xml = "<xml>"; + while (its.hasNext()) { + String key = its.next(); + String value = map.get(key); + xml += String.format("<%1$s><![CDATA[%2$s]]></%3$s>", key, value, key); + } + xml += "</xml>"; + return xml; + } + + public static String getSignMD5(Map<String, String> map, String k) { + Map<String, String> tm = new TreeMap<String, String>(); + tm.putAll(map); + Set<String> set = tm.keySet(); + Iterator<String> its = set.iterator(); + String result = ""; + while (its.hasNext()) { + String key = its.next(); + String val = tm.get(key); + result += key + "=" + val + "&"; + } + result += "key=" + k; + return StringUtil.Md5(result).toUpperCase(); + } + + public static String getAcessToken(String appId, String appSecret) { + String tokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + + "&secret=" + appSecret; + String token = HttpUtil.get(tokenUrl); + String access_token = JSONObject.fromObject(token).optString("access_token"); + return access_token; + } + + // 鑾峰彇璇︾粏鐨勭敤鎴蜂俊鎭� + public static JSONObject getDetailGZUserInfo(String openId, String accessToken) { + String url = String.format("https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=zh_CN", + accessToken, openId); + String result = HttpUtil.get(url); + return JSONObject.fromObject(result); + } + + // 鍒涘缓鑿滃崟 + public static void createMenu(String accessToken, JSONObject root) { + HttpUtil.post("https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" + accessToken); + // 鍒涘缓鑿滃崟鍐� + String url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + accessToken; + String result = HttpUtil.post(url, root.toString()); + } + + public static String getShortUrl(String accessToken, String url) { + + String requestUrl = "https://api.weixin.qq.com/cgi-bin/shorturl?access_token=" + accessToken; + JSONObject data = new JSONObject(); + data.put("action", "long2short"); + data.put("long_url", url); + String result = HttpUtil.post(requestUrl, data.toString()); + System.out.println(result); + return ""; + } + +} -- Gitblit v1.8.0