Существующий API, который я должен вызвать, принимает параметр запроса в форме
?key=001|ABC|123456
Однако RestTemplate
, используя свой внутренний UriBuilder
, экранирует символ |
до %7C
.
Таким образом, этот параметр приводит к
?key=001%7CABC%7C123456
Я попытался установить пользовательский UriTemplateHandler
через setUriTemplateHandler
, используя новый DefaultUriBuilderFactory
final var uriBuilder = new DefaultUriBuilderFactory();
и отключив кодировкуи синтаксический анализ
uriBuilder.setEncodingMode(EncodingMode.NONE);
uriBuilder.setParsePath(false);
, однако при создании URI
URI.create(url)
внутренне возникает другое исключение, говорящее о наличии недопустимого символа, который, очевидно, |
.
Как можно полностью отключить это поведение в Spring, используя RestTemplate
?
Я не могу использовать экранированные значения.
Выполнение того же вызова через SoapUI с использованием неэкранированного URL-адреса возвращает правильное значениеответ.