From e8d15ec29c72b7044b77036e72f99dc2ee861bb5 Mon Sep 17 00:00:00 2001 From: Looly Date: Sun, 28 Mar 2021 14:21:36 +0800 Subject: [PATCH] fix url path bug --- CHANGELOG.md | 1 + .../src/main/java/cn/hutool/core/net/url/UrlPath.java | 2 +- .../src/test/java/cn/hutool/core/net/UrlBuilderTest.java | 8 ++++++++ .../src/test/java/cn/hutool/http/HttpUtilTest.java | 7 +++++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc42a32b4..eb44f6931 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ ### Bug修复 * 【core 】 修复FileTypeUtil中OFD格式判断问题(pr#1489@Github) * 【core 】 修复CamelCaseLinkedMap和CaseInsensitiveLinkedMap的Linked失效问题(pr#1490@Github) +* 【core 】 修复UrlPath中=被转义的问题 ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/net/url/UrlPath.java b/hutool-core/src/main/java/cn/hutool/core/net/url/UrlPath.java index 2f12c244b..099781cc6 100644 --- a/hutool-core/src/main/java/cn/hutool/core/net/url/UrlPath.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/url/UrlPath.java @@ -128,7 +128,7 @@ public class UrlPath { final StringBuilder builder = new StringBuilder(); for (String segment : segments) { - builder.append(CharUtil.SLASH).append(URLUtil.encodeAll(segment, charset)); + builder.append(CharUtil.SLASH).append(URLUtil.encodeQuery(segment, charset)); } if (withEngTag || StrUtil.isEmpty(builder)) { builder.append(CharUtil.SLASH); 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 78307e15a..c96601c33 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 @@ -235,4 +235,12 @@ public class UrlBuilderTest { final UrlBuilder urlBuilder = UrlBuilder.of(webUrl, StandardCharsets.UTF_8); Assert.assertEquals("a=123&b=4%3F6&c=789", urlBuilder.getQueryStr()); } + + @Test + public void encodePathTest(){ + // Path中的某些符号无需转义,比如= + final String urlStr = "http://hq.sinajs.cn/list=sh600519"; + final UrlBuilder urlBuilder = UrlBuilder.ofHttp(urlStr, CharsetUtil.CHARSET_UTF_8); + Assert.assertEquals(urlStr, urlBuilder.toString()); + } } diff --git a/hutool-http/src/test/java/cn/hutool/http/HttpUtilTest.java b/hutool-http/src/test/java/cn/hutool/http/HttpUtilTest.java index 4a7aa3c1f..12ccdcdcb 100644 --- a/hutool-http/src/test/java/cn/hutool/http/HttpUtilTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/HttpUtilTest.java @@ -318,4 +318,11 @@ public class HttpUtilTest { final String s = HttpUtil.get(url); Console.log(s); } + + @Test + @Ignore + public void sinajsTest(){ + final String s = HttpUtil.get("http://hq.sinajs.cn/list=sh600519"); + Console.log(s); + } }