From 6eec0329b196ddda7b570ca02030edd6250e401b Mon Sep 17 00:00:00 2001 From: zhuon Date: Wed, 9 Aug 2023 18:09:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96urlWithForm=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/hutool/http/HttpUtil.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) 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 ce0894ca2..c699710d0 100755 --- a/hutool-http/src/main/java/cn/hutool/http/HttpUtil.java +++ b/hutool-http/src/main/java/cn/hutool/http/HttpUtil.java @@ -678,13 +678,22 @@ public class HttpUtil { * @return 合成后的URL */ public static String urlWithForm(String url, Map form, Charset charset, boolean isEncodeParams) { - if (isEncodeParams && StrUtil.contains(url, '?')) { - // 在需要编码的情况下,如果url中已经有部分参数,则编码之 - url = encodeParams(url, charset); - } - // url和参数是分别编码的 - return urlWithForm(url, toParams(form, charset), charset, false); + return urlWithForm(url, toParams(form, charset), charset, isEncodeParams); + } + + /** + * 将表单数据加到URL中(用于GET表单提交) + * 表单的键值对会被url编码,但是url中原参数不会被编码 + * 且对form参数进行 FormUrlEncoded ,x-www-form-urlencoded模式,此模式下空格会编码为'+' + * + * @param url URL + * @param form 表单数据 + * @param charset 编码 null表示不encode键值对 + * @return 合成后的URL + */ + public static String urlWithFormUrlEncoded(String url, Map form, Charset charset) { + return urlWithForm(url, toParams(form, charset, true), charset, true); } /**