Я использую com.sun.jersey.api.uri.UriBuilderImpl
реализацию UriBuilder
для кодирования URL (версия 1.19).Проблема возникает, когда параметр запроса моего URL-адреса включает в себя как фигурные скобки, так и пробел.
Пример:
UriBuilder uriBuilder = fromUri("www.something.com")
.queryParam("q", "{some thing}");
return uriBuilder.build().toString();
Сбой:
javax.ws.rs.core.UriBuilderException: java.net.URISyntaxException: Illegal character in query at index 27: www.something.com?q=%7Bsome thing%7D
интересно, как будто я убираю фигурные скобки, получаю ожидаемую кодировку: www.something.com?q=some+thing
...
org.apache.http.client.utils.URIBuilder
кодирует это, как я и ожидал, а именно: www.something.com?q=%7Bsome+thing%7D
Я пытался сделать это:
...
.queryParam("q", UriComponent.encode(searchQuery, UriComponent.Type.QUERY_PARAM)).
.build();
Но тогда символ пробела также кодируется в www.something.com?q=%7Bsome%2Bthing%7D
.
Что мне нужно сделать, чтобы получить www.something.com?q=%7Bsome+thing%7D
?