From a97d8c5b4d6cf628743529fd62a5a7d713f56686 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 3 Nov 2021 01:35:18 +0800 Subject: [PATCH] fix method --- .../java/cn/hutool/core/net/url/UrlQuery.java | 35 ++----------------- .../cn/hutool/core/net/UrlBuilderTest.java | 7 ++++ .../main/java/cn/hutool/http/HttpUtil.java | 8 +++-- 3 files changed, 15 insertions(+), 35 deletions(-) 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); } /**