WANG преди 6 години
родител
ревизия
a0d762846c
променени са 1 файла, в които са добавени 23 реда и са изтрити 16 реда
  1. 23 16
      src/main/java/cn/com/qmth/examcloud/commons/util/UrlUtil.java

+ 23 - 16
src/main/java/cn/com/qmth/examcloud/commons/util/UrlUtil.java

@@ -5,6 +5,7 @@ import java.net.URLDecoder;
 import java.net.URLEncoder;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Map.Entry;
 
 /**
  * url 处理工具
@@ -27,7 +28,7 @@ public class UrlUtil {
 			int indexOf = url.lastIndexOf('?');
 
 			if (0 < indexOf) {
-				url = url.substring(indexOf);
+				url = url.substring(indexOf + 1);
 			}
 			String[] pairs = url.trim().split("&");
 			for (String pair : pairs) {
@@ -99,26 +100,32 @@ public class UrlUtil {
 	}
 
 	/**
-	 * 方法注释
+	 * url拼接参数
 	 *
 	 * @author WANGWEI
-	 * @param fragments
+	 * @param url
+	 * @param params
 	 * @return
 	 */
-	public static String joinUrl(String... fragments) {
+	public static String joinParams(String url, Map<String, String> params) {
+		Map<String, String> urlParams = getUrlParams(url);
+		urlParams.putAll(params);
+
+		int indexOf = url.lastIndexOf('?');
+
+		if (0 < indexOf) {
+			url = url.substring(0, indexOf);
+		}
+
 		StringBuilder sb = new StringBuilder();
-		for (int i = 0; i < fragments.length; i++) {
-			String cur = fragments[i];
-			if (cur.endsWith("/")) {
-				cur = cur.substring(0, cur.length() - 1);
-			}
-			if (0 == i) {
-				sb.append(cur);
-			} else if (cur.startsWith("/")) {
-				sb.append(cur);
-			} else {
-				sb.append("/").append(cur);
-			}
+		sb.append(url).append("?");
+		boolean hasParams = false;
+		for (Entry<String, String> entry : urlParams.entrySet()) {
+			sb.append(entry.getKey()).append("=").append(encode(entry.getValue())).append("&");
+			hasParams = true;
+		}
+		if (hasParams) {
+			sb.deleteCharAt(sb.length() - 1);
 		}
 
 		return sb.toString();