In meinem Fall musste ich nur die gesamte URL übergeben und nur den Wert der einzelnen Parameter kodieren. Ich habe keinen gemeinsamen Code gefunden, um das zu tun, so (!!), so dass ich diese kleine Methode erstellt, um die Arbeit zu tun:
public static String encodeUrl(String url) throws Exception {
if (url == null || !url.contains("?")) {
return url;
}
List<String> list = new ArrayList<>();
String rootUrl = url.split("\\?")[0] + "?";
String paramsUrl = url.replace(rootUrl, "");
List<String> paramsUrlList = Arrays.asList(paramsUrl.split("&"));
for (String param : paramsUrlList) {
if (param.contains("=")) {
String key = param.split("=")[0];
String value = param.replace(key + "=", "");
list.add(key + "=" + URLEncoder.encode(value, "UTF-8"));
}
else {
list.add(param);
}
}
return rootUrl + StringUtils.join(list, "&");
}
public static String decodeUrl(String url) throws Exception {
return URLDecoder.decode(url, "UTF-8");
}
Sie verwendet Apache Commons' org.apache.commons.lang3.StringUtils .