URL: https://hostname.com/Project/docs/index.html?show=all&name=neel&err=https://google.com&lastname=
request.getQueryString: show=all&name=neel&err=https://google.com&lastname=
Для request.getQueryString я хочу кодировать только ключ и значение. (Не хочу кодировать = и &)
Я написал следующий код.
private static String encodeValue(String value) {
String str=null;
try {
str = URLEncoder.encode(value, StandardCharsets.UTF_8.toString());
} catch (UnsupportedEncodingException w) {
}
return str;
}
String encodedQuery = Arrays.stream(request.getQueryString().split("&"))
.map(param -> encodeValue(param.split("=")[0]) + "=" + encodeValue(param.split("=")[1]))
.collect(Collectors.joining("&"));
Я получаю правильный результат, если у меня есть запрос. GetQueryString -
show=all&name=neel&err=https://google.com&lastname=rambo
, тогда кодированный запрос будет
show=all&name=neel&err=https%3A%2F%2Fgoogle.com&lastname=rambo
Однако он выдаст исключение java .lang.ArrayIndexOutOfBoundsException, когда это будет
visibility=all&name=neel&err=https%3A%2F%2Fgoogle.com&lastname=
Может ли кто-нибудь помочь мне в рефакторинге моего кода? Спасибо