Вопросительный знак в значении @InjectLink кодируется как%3F. Как это предотвратить?
Я использую функцию заголовков ссылок Джерси для создания заголовков ссылок HTTP:
@InjectLink(value="users/?orgId=12345&page=0",rel="first")
Работает хорошо, за исключением вопросительного знака - это кодируется в%3F, и в результате URL выглядит следующим образом: http://localhost:8080/app/users/%3ForgId=12345&page=0
Есть ли способ предотвратить кодирование и оставить знак вопроса как есть?
2 ответа
Это не подходящий случай для @InjectLink(value)
, Построение параметров URL должно использоваться @InjectLink(method, bindings...)
,
Например:
@InjectLink(
resource = UserResource.class,
method ="getUserById",
bindings ={@Binding(name = "orgId", value = "${instance.orgId}")},
style = Style.ABSOLUTE,
... )
И целевой ресурс Джерси UserResource.java:
@Path("users/{orgId}")
public User getUserById(@PathParam("orgId") String orgId) {...}
Вопрос mar - это URL, закодированный для строки параметров запроса, поэтому нормально иметь%3 на вашем пути. Попробуйте использовать 'bindings' или поставить @Queryparams следующим образом. Как заставить URIBuilder.path(...) кодировать такие параметры, как "%AD"? Этот метод не всегда правильно кодирует параметры в процентах