UriBuilder неправильно кодирует значение Query Parameters? - PullRequest
3 голосов
/ 12 мая 2010

Рассмотрим следующий пример кода, в котором закодированы путь и отдельный параметр ...

Имя параметра: "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 Ответ

1 голос
/ 12 мая 2010

Ваш начальный вызов "fromPath", вероятно, должен быть "fromUri". Тем не менее ...

Это правильно?

Нет, это не похоже на правильный вывод.

Не должен символ "&" (и может быть даже "?") кодироваться в строка значения параметра?

Да, так и должно быть.

Не будет ли созданный URL интерпретируется следующим образом:

Один первый параметр name = "param", значение = "ar? aaa% 3Dbbb" с последующим второй параметр, name = "ccc% 3Dddd", без значения.

Первый параметр будет "foo / bar? Aaa = bbb", но да, вы правильно интерпретируете. Это похоже на ошибку в вашем провайдере javax.ws.rs.core.

...