utf-8编码resttemplate的url参数

时间:2016-07-14 19:22:24

标签: java spring utf-8 resttemplate diacritics

我正在使用spring RestTemplate.exchange(URI)

uri与UriComponentsBuilder组装在一起。 我的一个查询参数是 query=München

如果我从日志中生成了url,并将其与curl一起使用,则可以正常工作。 当我让休息模板运行查询时,它不会。

关于变音符号没有被编码的​​东西?

如何让UriCompenentsBuilder和/或RestTemplate应对变音符号?

我知道我可以使用带有RestTemplate的字符串url,如下所示:

query=M%C3%BCnchen

并且有效。

1 个答案:

答案 0 :(得分:0)

使用Spring默认请求工厂(RestTemplate)初始化SimpleClientHttpRequestFactory时会发生这种情况,例如:

RestTemplate restTemplate = new RestTemplate();

将默认请求工厂替换为HttpComponentsClientHttpRequestFactory和Apache HttpClient

    CloseableHttpClient httpClient = HttpClientBuilder
            .create()
            .build();
    HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
    restTemplate = new RestTemplate(factory);

然后像往常一样拨打restTemplate.exchange()