当我尝试使用GET调用端点并将参数传递到具有特殊字符(如'ñ')的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 :(得分: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);
我的意思是,自己解释网址并输入您想要的编码。
答案 1 :(得分: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);