Как написать поток Java 8 для кодирования request.getQueryString, кроме & и = - PullRequest
0 голосов
/ 11 июля 2020

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=

Может ли кто-нибудь помочь мне в рефакторинге моего кода? Спасибо

...