UriBuilder неправильно кодирует значение Query Parameters?
Давайте рассмотрим следующий пример кода, в котором закодированы путь и отдельный параметр...
Название параметра: "param"
Значение параметра: "foo/bar? Aaa=bbb&ccc=ddd" (бывает URL с параметрами запроса)
String test = UriBuilder.fromPath("https://dummy.com").
queryParam("param", "foo/bar?aaa=bbb&ccc=ddd").
build().toURL().toString();
Возвращена закодированная строка URL:
"https://dummy.com?param=foo/bar?aaa%3Dbbb&ccc%3Dddd"
Это правильно?
Разве символ "&" (и может быть даже "?") Не должен быть закодирован в строке значения параметра?
Не будет ли полученный URL интерпретироваться следующим образом:
Один первый параметр name="param", value = "ar? Aaa%3Dbbb", за которым следует второй параметр name="ccc%3Dddd", без значения.
1 ответ
Ваш начальный вызов "fromPath", вероятно, должен быть "fromUri". Это сказал...
Это правильно?
Нет, это не похоже на правильный вывод.
Разве символ "&" (и может быть даже "?") Не должен быть закодирован в строке значения параметра?
Да, так и должно быть.
Не будет ли полученный URL интерпретироваться следующим образом:
Один первый параметр name="param", value = "ar? Aaa%3Dbbb", за которым следует второй параметр name="ccc%3Dddd", без значения.
Первый параметр будет "foo/bar? Aaa=bbb", но да, вы интерпретируете правильно. Это похоже на ошибку в вашем провайдере javax.ws.rs.core.