修复HttpUtil.urlWithFormUrlEncoded方法重复编码问题

This commit is contained in:
Looly 2024-04-08 17:31:18 +08:00
parent 28882f5833
commit 8ca768a997
3 changed files with 25 additions and 2 deletions

View File

@ -269,7 +269,7 @@ public class StrUtil extends CharSequenceUtil implements StrPool {
* *
* @param obj 对象 * @param obj 对象
* @return {@link String } * @return {@link String }
* @author ahwei163@qq.com * @author Junwei Xu
*/ */
public static String toStringOrEmpty(final Object obj) { public static String toStringOrEmpty(final Object obj) {
// obj为空时, 返回 null "null" 都不适用部分场景, 此处返回 "" 空字符串 // obj为空时, 返回 null "null" 都不适用部分场景, 此处返回 "" 空字符串

View File

@ -206,7 +206,7 @@ public class HttpUtil {
* @return 合成后的URL * @return 合成后的URL
*/ */
public static String urlWithForm(final String url, final Map<String, Object> form, final Charset charset, final boolean isEncodeParams) { public static String urlWithForm(final String url, final Map<String, Object> form, final Charset charset, final boolean isEncodeParams) {
return urlWithForm(url, UrlQueryUtil.toQuery(form, charset), charset, isEncodeParams); return urlWithForm(url, UrlQueryUtil.toQuery(form, null), charset, isEncodeParams);
} }
/** /**

View File

@ -0,0 +1,23 @@
package org.dromara.hutool.http;
import org.dromara.hutool.core.util.CharsetUtil;
import org.junit.Assert;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
public class Issue3536Test {
@Test
public void urlWithFormUrlEncodedTest() {
final String url = "https://hutool.cn/test";
final Map<String, Object> paramMap = new HashMap<>();
paramMap.put("redirect_uri", "https://api.hutool.cn/v1/test");
paramMap.put("scope", "a,b,c你");
final String s = HttpUtil.urlWithFormUrlEncoded(url, paramMap, CharsetUtil.UTF_8);
Assert.assertEquals("https://hutool.cn/test?scope=a,b,c%E4%BD%A0&redirect_uri=https://api.hutool.cn/v1/test", s);
}
}