From 0fdec254ed1ed793896a678d9723abb76cd253fd Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 9 Aug 2022 21:14:49 +0800 Subject: [PATCH] =?UTF-8?q?UrlBuilder=E7=9A=84toURI=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=B0=86url=E9=87=8D=E5=A4=8D=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../java/cn/hutool/core/net/url/UrlBuilder.java | 7 +------ .../java/cn/hutool/core/net/UrlBuilderTest.java | 17 +++++++++++++++++ .../src/test/java/cn/hutool/db/DbTest.java | 6 ++++++ 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1d10560c..81cee78a6 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ * 【http 】 修复https下可能的Patch、Get请求失效问题(issue#I3Z3DH@Gitee) * 【core 】 修复RandomUtil#randomString 入参length为负数时报错问题(issue#2515@Github) * 【core 】 修复SecureUtil传入null的key抛出异常问题(pr#2521@Github) +* 【core 】 修复UrlBuilder的toURI方法将url重复编码(issue#2503@Github) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/net/url/UrlBuilder.java b/hutool-core/src/main/java/cn/hutool/core/net/url/UrlBuilder.java index 76199023a..86a5138d7 100755 --- a/hutool-core/src/main/java/cn/hutool/core/net/url/UrlBuilder.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/url/UrlBuilder.java @@ -544,12 +544,7 @@ public final class UrlBuilder implements Builder { */ public URI toURI() { try { - return new URI( - getSchemeWithDefault(), - getAuthority(), - getPathStr(), - getQueryStr(), - getFragmentEncoded()); + return toURL().toURI(); } catch (URISyntaxException e) { return null; } 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 5f869e70e..35e7fc346 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 @@ -445,4 +445,21 @@ public class UrlBuilderTest { final UrlBuilder of = UrlBuilder.of(url, null); Assert.assertEquals(url.replace("&", "&"), of.toString()); } + + @SuppressWarnings("ConstantConditions") + @Test + public void issues2503Test() throws URISyntaxException { + String duplicate = UrlBuilder.ofHttp("127.0.0.1:8080") + .addQuery("param[0].field", "编码") + .toURI() + .toString(); + Assert.assertEquals("http://127.0.0.1:8080?param%5B0%5D.field=%E7%BC%96%E7%A0%81", duplicate); + + String normal = UrlBuilder.ofHttp("127.0.0.1:8080") + .addQuery("param[0].field", "编码") + .toURL() + .toURI() + .toString(); + Assert.assertEquals(duplicate, normal); + } } diff --git a/hutool-db/src/test/java/cn/hutool/db/DbTest.java b/hutool-db/src/test/java/cn/hutool/db/DbTest.java index 5419097a2..6b43f5d7c 100644 --- a/hutool-db/src/test/java/cn/hutool/db/DbTest.java +++ b/hutool-db/src/test/java/cn/hutool/db/DbTest.java @@ -132,4 +132,10 @@ public class DbTest { return ps; }), new EntityListHandler()); } + + @Test + @Ignore + public void findWithDotTest() throws SQLException { + Db.use().find(Entity.create("user").set("a.b", "1")); + } }