/**
* 将表单数据加到URL中(用于GET表单提交)<br>
* 表单的键值对会被url编码,但是url中原参数不会被编码
* @param url URL
* @param form 表单数据
* @param charset 编码
* @param isEncodeParams 是否对键和值做转义处理
* @return 合成后的URL
public static String urlWithForm(String url, Map<String, Object> form, Charset charset, boolean isEncodeParams) {
if (isEncodeParams && StrUtil.contains(url, '?')) {
// 在需要编码的情况下,如果url中已经有部分参数,则编码之
url = encodeParams(url, charset);
// url和参数是分别编码的
return urlWithForm(url, toParams(form, charset), charset, false);
/**
* 将表单数据加到URL中(用于GET表单提交)<br>
* 表单的键值对会被url编码,但是url中原参数不会被编码
* @param url URL
* @param form 表单数据
* @param charset 编码
* @param isEncodeParams 是否对键和值做转义处理
* @return 合成后的URL
public static String urlWithForm(String url, Map<String, Object> 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 isEncode ? encodeParams(url, charset) : url;
if (qmIndex > 0) {
urlBuilder.append(isEncode ? encodeParams(url, charset) : url);
if (false == StrUtil.endWith(url, '&')) {
urlBuilder.append(isEncode ? encodeParams(queryString, charset) : queryString);
return urlBuilder.toString();
return isEncode ? encodeParams(url, charset) : url;
if (qmIndex > 0) {
urlBuilder.append(isEncode ? encodeParams(url, charset) : url);
if (false == StrUtil.endWith(url, '&')) {
urlBuilder.append(isEncode ? encodeParams(queryString, charset) : queryString);
return urlBuilder.toString();
/**
* 将表单数据加到URL中(用于GET表单提交)<br>
* 表单的键值对会被url编码,但是url中原参数不会被编码
* @param url URL
* @param form 表单数据
* @param charset 编码
* @param isEncodeParams 是否对键和值做转义处理
* @return 合成后的URL
public static String urlWithForm(String url, Map<String, Object> form, Charset charset, boolean isEncodeParams) {
if (isEncodeParams && StrUtil.contains(url, '?')) {
// 在需要编码的情况下,如果url中已经有部分参数,则编码之
url = encodeParams(url, charset);
// url和参数是分别编码的
return urlWithForm(url, toParams(form, charset), charset, false);
/**
* 将表单数据加到URL中(用于GET表单提交)<br>
* 表单的键值对会被url编码,但是url中原参数不会被编码
* @param url URL
* @param form 表单数据
* @param charset 编码
* @param isEncodeParams 是否对键和值做转义处理
* @return 合成后的URL
public static String urlWithForm(String url, Map<String, Object> 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 isEncode ? encodeParams(url, charset) : url;
if (qmIndex > 0) {
urlBuilder.append(isEncode ? encodeParams(url, charset) : url);
if (false == StrUtil.endWith(url, '&')) {
urlBuilder.append(isEncode ? encodeParams(queryString, charset) : queryString);
return urlBuilder.toString();
return isEncode ? encodeParams(url, charset) : url;
if (qmIndex > 0) {
urlBuilder.append(isEncode ? encodeParams(url, charset) : url);
if (false == StrUtil.endWith(url, '&')) {
urlBuilder.append(isEncode ? encodeParams(queryString, charset) : queryString);
return urlBuilder.toString();