|
@@ -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();
|