Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to disable URL encoding in Spring RestTemplate?

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

url contains the string

https://localhost/api/fm/info/dump/a\b\f\20170722_225714.jpg?lastModified=1507881481909

Spring RestTemplate encodes it to the following when requesting to server

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

FYI, I need to disable URL encoding so that the '\' characters are available on server side as it is a business requirement since our web server (Nginx) has been configured to perform some checks based on the path of the request containing '\' character.

like image 644
Anirban Das Avatar asked Dec 12 '25 04:12

Anirban Das


1 Answers

Create a Configuration class and add the following code:

@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;
    }
}

Then Autowire your RestTemplate in any class through constructor injection.

like image 133
Tanmay Naik Avatar answered Dec 13 '25 20:12

Tanmay Naik



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!