2016-02-09 3 views
0

У меня возникают проблемы, когда я пытаюсь вызвать конечную точку с помощью GET и передачи параметра в URL с особым характером, как «N»:RestTemplate getForObject специальные символы в URL параметры

Пример:

parameters.add("name", "Añisc"); 
Person person = rest.getForObject(url.toUri(), Person.class, parameters); 

Возврат:

Error 502, Bad gateway 

Я читал возможные решения, но никто не работает для меня. Что я могу сделать, чтобы отправить специальные символы в свойство ?. Я думаю, что getForObject и url.toUri делает нужную кодировку ...

Я попытался добавить следующее TOMCAT конфигурации без везения:

URIEncoding="UTF-8" 

ответ

0

Может быть, вы можете использовать другой метод RestTemplate:

final String oUrl = "http://myhost/name/{name}"; 
    final URI expanded = new UriTemplate(url).expand("Añisc"); 
    final String fUrl = URLDecoder.decode(expanded.toString(), "UTF-8"); 
    restTemplate.getForObject(fUrl, Object.class); 

Я имею в виду самоиспользование URL и размещение нужной кодировки.

0

Попробуйте

String query = "Añisc"; 
String uri = "http://localhost:8081/"; // example 
String path = "name" //example 

URI targetUrl = UriComponentsBuilder.fromUriString(url) 
      .path(path) 
      .queryParam("name", query) 
      .build() 
      .toUri(); 

restTemplate.getForObject(targetUrl, Person.class); 
Смежные вопросы