package org.jeecg.common.util;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.lang.reflect.Field;
import java.util.*;
public class UrlParamUtil {
/**
* 将benn转成url参数
* @param obj
* @return
*/
public static String bean2UrlParams(Object obj){
Field[] fields = obj.getClass().getDeclaredFields();
//按照name升序排序
Arrays.sort(fields, new Comparator<Field>() {
@Override
public int compare(Field o1, Field o2) {
return o1.getName().compareTo(o2.getName());
}
});
StringBuffer result = new StringBuffer(10);
//拼接成url参数
try {
for(Field field:fields){
field.setAccessible(true);
if(field.get(obj) != null){
result.append(field.getName());
result.append("=");
result.append(field.get(obj).toString());
result.append("&");
}
}
}catch (IllegalAccessException e){
e.printStackTrace();
}
return result.substring(0, result.lastIndexOf("&"));
}
/**
* 将url参数转换成map
* @param param aa=11&bb=22&cc=33
* @return
*/
public static Map<String, Object> urlParams2Map(String param) {
Map<String, Object> map = new HashMap<String, Object>(0);
if (StringUtils.isBlank(param)) {
return map;
}
String[] params = param.split("&");
for (int i = 0; i < params.length; i++) {
String[] p = params[i].split("=");
if (p.length == 2) {
map.put(p[0], p[1]);
}
}
return map;
}
/**
* 将map转换成url
* @param map
* @return
*/
public static String map2UrlParams(Map<String, Object> map) {
if (map == null) {
return "";
}
TreeMap<String, Object> sort = new TreeMap(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
sort.putAll(map);
StringBuffer sb = new StringBuffer();
for (Map.Entry<String, Object> entry : sort.entrySet()) {
sb.append(entry.getKey() + "=" + entry.getValue());
sb.append("&");
}
String s = sb.toString();
if (s.endsWith("&")) {
s = org.apache.commons.lang.StringUtils.substringBeforeLast(s, "&");
}
return s;
}
/**
* 将map转换成xml,和字符串(发起扣款请求用)
* @param map
* @return
*/
public static Map<String,String> map2XmlAndStr(TreeMap<String, Object> map) {
if (map == null) {
return null;
}
StringBuffer str = new StringBuffer();
StringBuffer xml = new StringBuffer();
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().toString();
str.append(key + "=" + value +"&");
xml.append("<" + key + ">" + value + "</" + key + ">" );
}
String reStr = str.toString();
Map<String,String> result = new HashMap<String, String>(){{
put("str",reStr.substring(0,str.length()-1));
put("xml",xml.toString());
}};
return result;
}
/**
* 将treeMap转换成url
* @param map
* @return
*/
public static String treeMap2UrlStr(TreeMap<String, Object> map) {
if (map == null) {
return "";
}
StringBuffer str = new StringBuffer();
for (Map.Entry<String, Object> entry : map.entrySet()) {
str.append(entry.getKey() + "=" + entry.getValue());
str.append("&");
}
return str.toString().substring(0, str.length()-1);
}
/**
* xml转treeMap
* @param xml
* @return
*/
public static TreeMap<String,Object> xml2TreeMap(String xml) {
TreeMap<String,Object> map = new TreeMap<>();
Document doc = null;
try {
doc = DocumentHelper.parseText(xml); // 将字符串转为XML
Element rootElt = doc.getRootElement(); // 获取根节点
List<Element> list = rootElt.elements();//获取根节点下所有节点
for (Element element : list) { //遍历节点
map.put(element.getName(), element.getText()); //节点的name为map的key,text为map的value
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
/**
* 验证签名
* @param key
* @param map
* @return
*/
public static boolean proveSign(String key,TreeMap<String,Object> map){
if (map == null) {
return false;
}
StringBuffer str = new StringBuffer();
String wxSign = "";
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (entry.getKey().equals("sign")){
wxSign = entry.getValue().toString();
}else {
str.append(entry.getKey() + "=" + entry.getValue());
str.append("&");
}
}
str.append("key=" + key);
String sign = MD5Util.MD5Encode(str.toString(),"UTF-8").toUpperCase();
return sign.equals(wxSign);
}
}
微信接口处理工具类
最新推荐文章于 2023-06-07 23:11:52 发布