本文转载,意在学习开发快速便捷。
新建工具类
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class SortUtils {
/**
* @param paraMap 参数
* @param encode 编码
* @param isLower 是否区分小写
* @return
*/
public static String formatUrlParam(Map<String, String> param, String encode, boolean isLower) {
String params = "";
Map<String, String> map = param;
try {
List<Map.Entry<String, String>> itmes = new ArrayList<Map.Entry<String, String>>(map.entrySet());
//对所有传入的参数按照字段名从小到大排序
//Collections.sort(items); 默认正序
//可通过实现Comparator接口的compare方法来完成自定义排序
Collections.sort(itmes, new Comparator<Map.Entry<String, String>>() {
@Override
public int compare(Entry<String, String> o1, Entry<String, String> o2) {
// TODO Auto-generated method stub
return (o1.getKey().toString().compareTo(o2.getKey()));
}
});
//构造URL 键值对的形式
StringBuffer sb = new StringBuffer();
for (Map.Entry<String, String> item : itmes) {
if (MyUtils.isNotBlank(item.getKey())) {
String key = item.getKey();
String val = item.getValue();
val = URLEncoder.encode(val, encode);
if (isLower) {
sb.append(key.toLowerCase() + "=" + val);
} else {
sb.append(key + "=" + val);
}
sb.append("&");
}
}
params = sb.toString();
if (!params.isEmpty()) {
params = params.substring(0, params.length() - 1);
}
} catch (Exception e) {
return "";
}
return params;
}
}
写个test
class Test {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("crTce", "200");
map.put("bitTe", "测试标题");
map.put("aonTent", "测试内容");
map.put("drder_To", "1807160850122023");
String url = SortUtils.formatUrlParam(map, "utf-8", false);
System.out.println(url);
}
}
输出结果:aonTent=%E6%B5%8B%E8%AF%95%E5%86%85%E5%AE%B9&bitTe=%E6%B5%8B%E8%AF%95%E6%A0%87%E9%A2%98&crTce=200&drder_To=1807160850122023