import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;/*** 功能描述:url解析与拼接*/
public class UrlUtils {/*** 在给定的url后面拼接查询参数* @param baseUrl url地址* @param params 要拼接的查询参数map* @return 拼接上params查询参数的新url*/public static String urlJoin(String baseUrl, Map<String, String> params){if (params == null || params.isEmpty()){return baseUrl;}StringBuilder sb = new StringBuilder(baseUrl);boolean isFirst = true;Map<String,String> spMap = urlSplit(baseUrl);for (String key : params.keySet()){String value = params.get(key);if (StringUtils.isNotEmpty(key) &&StringUtils.isNotEmpty(value)){if (isFirst && spMap.isEmpty()){isFirst = false;sb.append("?");}else {sb.append("&");}sb.append(key).append("=").append(value);}}return sb.toString();}/*** 去掉url中的路径,留下请求参数部分* 例:https://postest.bgzchina.com/mobilePay?sysId=ZDM20210510000088857537去掉后* sysId=ZDM20210510000088857537* @param strURL url地址* @return url请求参数部分*/private static String truncateUrlPage(String strURL){String strAllParam=null;String[] arrSplit=null;strURL=strURL.trim().toLowerCase();arrSplit=strURL.split("[?]");if(strURL.length()>1){if(arrSplit.length>1){for (int i=1;i<arrSplit.length;i++){strAllParam = arrSplit[i];}}}return strAllParam;}/*** 解析出url参数中的键值对* 如 "index.jsp?Action=del&id=123",解析出Action:del,id:123存入map中* @param URL url地址* @return url请求参数部分*/public static Map<String, String> urlSplit(String URL){Map<String, String> mapRequest = new HashMap<>();String[] arrSplit=null;String strUrlParam=truncateUrlPage(URL);if(strUrlParam==null){return mapRequest;}arrSplit=strUrlParam.split("[&]");for(String strSplit:arrSplit){String[] arrSplitEqual=null;arrSplitEqual= strSplit.split("[=]");//解析出键值if(arrSplitEqual.length>1){//正确解析mapRequest.put(arrSplitEqual[0], arrSplitEqual[1]);}else{if(arrSplitEqual[0]!=""){//只有参数没有值,不加入mapRequest.put(arrSplitEqual[0], "");}}}return mapRequest;}
}
不需要做任何修改,直接拿去用就行