fix method

This commit is contained in:
Looly 2021-11-03 01:35:18 +08:00
parent 0988a56d44
commit a97d8c5b4d
3 changed files with 15 additions and 35 deletions

View File

@ -210,16 +210,6 @@ public class UrlQuery {
return this.query.get(key); 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}形式<br> * 构建URL查询字符串即将key-value键值对转换为{@code key1=v1&key2=v2&key3=v3}形式<br>
* 对于{@code null}处理规则如下 * 对于{@code null}处理规则如下
@ -229,11 +219,9 @@ public class UrlQuery {
* </ul> * </ul>
* *
* @param charset encode编码null表示不做encode编码 * @param charset encode编码null表示不做encode编码
* @param isEncode 是否转义键和值转义遵循rfc3986规范
* @return URL查询字符串 * @return URL查询字符串
* @since 5.7.13
*/ */
public String build(Charset charset, boolean isEncode) { public String build(Charset charset) {
if (MapUtil.isEmpty(this.query)) { if (MapUtil.isEmpty(this.query)) {
return StrUtil.EMPTY; return StrUtil.EMPTY;
} }
@ -247,10 +235,10 @@ public class UrlQuery {
if(sb.length() >0){ if(sb.length() >0){
sb.append("&"); 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(); value = entry.getValue();
if (null != value) { 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); 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;
}
} }

View File

@ -306,4 +306,11 @@ public class UrlBuilderTest {
Assert.assertEquals("https://domain.cn/api/xxx/bbb", url); 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());
}
} }

View File

@ -459,11 +459,11 @@ public class HttpUtil {
* </pre> * </pre>
* *
* @param paramMap 表单数据 * @param paramMap 表单数据
* @param charset 编码null表示不encode键值对 * @param charset 编码{@code null} 表示不encode键值对
* @return url参数 * @return url参数
*/ */
public static String toParams(Map<String, ?> paramMap, Charset charset) { public static String toParams(Map<String, ?> paramMap, Charset charset) {
return toParams(paramMap, charset, true); return UrlQuery.of(paramMap).build(charset);
} }
/** /**
@ -480,9 +480,11 @@ public class HttpUtil {
* @param isEncode 是否转义键和值 * @param isEncode 是否转义键和值
* @return url参数 * @return url参数
* @since 5.7.13 * @since 5.7.13
* @deprecated 请使用 {@link #toParams(Map, Charset)}, charset为null表示不编码
*/ */
@Deprecated
public static String toParams(Map<String, ?> paramMap, Charset charset, boolean isEncode) { public static String toParams(Map<String, ?> paramMap, Charset charset, boolean isEncode) {
return UrlQuery.of(paramMap).build(charset, isEncode); return toParams(paramMap, isEncode ? charset : null);
} }
/** /**