Мы используем Jersey Client 2.21. Я замечаю, что когда мы помещаем фигурные скобки (ака фигурные скобки) в качестве значения параметра, тогда он не получает должным образом закодированный. Не только это, но и все внутри фигурных скобок не закодировано. Это неверно для обычных скобок или других небезопасных символов, с которыми я тестировал.Кодирование фигурных скобок в Джерси-клиенте 2
См. Пример ниже. В этом примере я вводим три параметра. Параметр управления с пробелами. Один с фигурными фигурными скобками и один с обычными скобками.
public static void testJerseyEncoding() {
Client client = ClientBuilder.newClient();
String url = "http://foo.com/path";
Map<String, String> map = new HashMap<>();
map.put("paramWithCurly", " {with a space}");
map.put("paramWithOutCurly", "with a space");
map.put("paramWithBracket", "[with a space]");
WebTarget target = client.target(url);
for (Map.Entry<String, String> entry : map.entrySet()) {
target = target.queryParam(entry.getKey(), entry.getValue());
}
System.out.println(target.toString());
}
Вот результат:
JerseyWebTarget { http://foo.com/path?paramWithBracket=%5Bwith+a+space%5D¶mWithOutCurly=with+a+space¶mWithCurly=+{with a space} }
ли что-то порвал с клиентом Джерси или я что-то не хватает? Коричневые фигурные скобки должны быть закодированы до «% 7B».
спасибо, что раскрыл тайну, почему он не закодировал фигурные скобки. любая идея, как отключить эту фигурную фигуру «особенность»? Похоже, что плохая идея для каркаса клиента jersey по-разному обрабатывает фигурные скобки, фигурные скобки кодируются и, следовательно, могут отображаться в URI. –