Я делаю вызов REST с RestTemplate
, и у меня есть урипарам, который содержит косую черту (т. Е. 20/20)
Перед вызовом RestTemplate
я преобразую uriParam в использованиеhttp-кодировка 20%2f20
.
Когда я вызываю RestTemplate, он преобразует %
в %25
, и данные, которые я получаю, неверны.
Возможно вызвать restTemplateс косой чертой в параметре?
Спасибо!
Пример кода:
String urlExample="www.nowhere.com/?variable={variable}";
String variable = URLEncoder.encode( "20/20", java.nio.charset.StandardCharsets.UTF_8.toString() );
Map< String, String > uriVariables = new HashMap<>();
uriVariables.put( "variable", variable );
restTemplate.exchange( urlExample, HttpMethod.GET, new HttpEntity<>, String.class, uriVariables );
Кажется, RestTemplate кодирует HttpEncoding от% до% 25, и это прерывает мой вызов.Можно избежать этой кодировки?
Решено:
, если вы указываете restTemplate для использования URI вместо String, RestTemplate избегает кодирования.
Для построения URI с параметрами лучше всего использовать UriComponentsBuilder, указывающий, что URI фактически закодирован в параметре build ().