diff --git a/hutool-core/src/main/java/cn/hutool/core/net/url/UrlQuery.java b/hutool-core/src/main/java/cn/hutool/core/net/url/UrlQuery.java
index 69d5ec641..cd7fff640 100644
--- a/hutool-core/src/main/java/cn/hutool/core/net/url/UrlQuery.java
+++ b/hutool-core/src/main/java/cn/hutool/core/net/url/UrlQuery.java
@@ -210,16 +210,6 @@ public class UrlQuery {
return this.query.get(key);
}
- /**
- * 构建URL查询字符串,即将key-value键值对转换为key1=v1&key2=&key3=v3形式
- *
- * @param charset encode编码,null表示不做encode编码
- * @return URL查询字符串
- */
- public String build(Charset charset) {
- return build(charset, true);
- }
-
/**
* 构建URL查询字符串,即将key-value键值对转换为{@code key1=v1&key2=v2&key3=v3}形式。
* 对于{@code null}处理规则如下:
@@ -229,11 +219,9 @@ public class UrlQuery {
*
*
* @param charset encode编码,null表示不做encode编码
- * @param isEncode 是否转义键和值,转义遵循rfc3986规范
* @return URL查询字符串
- * @since 5.7.13
*/
- public String build(Charset charset, boolean isEncode) {
+ public String build(Charset charset) {
if (MapUtil.isEmpty(this.query)) {
return StrUtil.EMPTY;
}
@@ -247,10 +235,10 @@ public class UrlQuery {
if(sb.length() >0){
sb.append("&");
}
- sb.append(isEncode ? RFC3986.QUERY_PARAM_NAME.encode(name, charset) : name);
+ sb.append(RFC3986.QUERY_PARAM_NAME.encode(name, charset));
value = entry.getValue();
if (null != value) {
- sb.append("=").append(isEncode ? RFC3986.QUERY_PARAM_VALUE.encode(value, charset) : value);
+ sb.append("=").append(RFC3986.QUERY_PARAM_VALUE.encode(value, charset));
}
}
}
@@ -302,21 +290,4 @@ public class UrlQuery {
this.query.put(URLUtil.decode(value, charset), null);
}
}
-
- /**
- * 键值对的name转换为
- *
- * @param str 原字符串
- * @param charset 编码,只用于encode中
- * @param isEncode 是否转义,转义遵循rfc3986规范
- * @return 转换后的String
- * @since 5.7.13
- */
- private static String nameToStr(CharSequence str, Charset charset, boolean isEncode) {
- String result = StrUtil.str(str);
- if (isEncode) {
- result = RFC3986.QUERY_PARAM_NAME.encode(result, charset);
- }
- return result;
- }
}
diff --git a/hutool-core/src/test/java/cn/hutool/core/net/UrlBuilderTest.java b/hutool-core/src/test/java/cn/hutool/core/net/UrlBuilderTest.java
index ea7604161..a094b9838 100644
--- a/hutool-core/src/test/java/cn/hutool/core/net/UrlBuilderTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/net/UrlBuilderTest.java
@@ -306,4 +306,11 @@ public class UrlBuilderTest {
Assert.assertEquals("https://domain.cn/api/xxx/bbb", url);
}
+
+ @Test
+ public void percent2BTest(){
+ String url = "http://xxx.cn/a?Signature=3R013Bj9Uq4YeISzAs2iC%2BTVCL8%3D";
+ final UrlBuilder of = UrlBuilder.ofHttpWithoutEncode(url);
+ Assert.assertEquals(url, of.toString());
+ }
}
diff --git a/hutool-http/src/main/java/cn/hutool/http/HttpUtil.java b/hutool-http/src/main/java/cn/hutool/http/HttpUtil.java
index 4833d9c8f..b7f485b0b 100644
--- a/hutool-http/src/main/java/cn/hutool/http/HttpUtil.java
+++ b/hutool-http/src/main/java/cn/hutool/http/HttpUtil.java
@@ -459,11 +459,11 @@ public class HttpUtil {
*
*
* @param paramMap 表单数据
- * @param charset 编码,null表示不encode键值对
+ * @param charset 编码,{@code null} 表示不encode键值对
* @return url参数
*/
public static String toParams(Map paramMap, Charset charset) {
- return toParams(paramMap, charset, true);
+ return UrlQuery.of(paramMap).build(charset);
}
/**
@@ -480,9 +480,11 @@ public class HttpUtil {
* @param isEncode 是否转义键和值
* @return url参数
* @since 5.7.13
+ * @deprecated 请使用 {@link #toParams(Map, Charset)}, charset为null表示不编码
*/
+ @Deprecated
public static String toParams(Map paramMap, Charset charset, boolean isEncode) {
- return UrlQuery.of(paramMap).build(charset, isEncode);
+ return toParams(paramMap, isEncode ? charset : null);
}
/**