如何在Spring RestTemplate中禁用URL编码?

时间:2017-11-21 20:50:17

标签: spring resttemplate url-encoding

String url = serverUrl + metadata.getUri();
response = restTemplate.exchange(url, metadata.getAction(), requestEntity, metadata.getResponseType());

url包含字符串

  

https://localhost/api/fm/info/dump/a \ B \˚F\ 20170722_225714.jpg?上次更改时间= 1507881481909

Spring RestTemplate在请求服务器时将其编码为以下内容

  

https://localhost/api/fm/info/dump/a%5Cb%5Cf%5C20170722_225714.jpg?lastModified=1507881481909

仅供参考,我需要禁用网址编码,以便' \'由于我们的Web服务器(Nginx)已配置为根据包含' \'的请求的路径执行某些检查,因此服务器端可以使用字符,因为这是业务要求。字符。

1 个答案:

答案 0 :(得分:4)

创建一个Configuration类并添加以下代码

@Configuration
public class RestTemplateConfig {

     
        @Bean
        public RestTemplate restTemplate() {
            DefaultUriBuilderFactory defaultUriBuilderFactory = new DefaultUriBuilderFactory();
            defaultUriBuilderFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.NONE);
            RestTemplate restTemplate = new RestTemplate();
            restTemplate.setUriTemplateHandler(defaultUriBuilderFactory);
            return restTemplate;
        }
}

然后通过构造函数注入自动将RestTemplate连接到任何类中。