0

I am trying to execute a HTTP GET request that I can execute properly in Postman in my Spring Boot application using the RestTemplate class.

This is the code I am using to send the request:

RestTemplate restTemplate = new RestTemplate();
String response = restTemplate.getForObject(url, String.class);

When I execute this the response variable contains only weird characters. My initial thought was that I was using the wrong encoding. The response I see in Postman indicates that the correct encoding is UTF-8, so I added this code:

restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));

I also though I was using the wrong "Accept" header, so I also added this code:

List<ClientHttpRequestInterceptor> interceptors = new ArrayList<>();
interceptors.add(new HeaderRequestInterceptor("Accept", MediaType.ALL_VALUE));
restTemplate.setInterceptors(interceptors);

Both these adjustments do not fix the issue. Is there any other way to fix this?

I am happy to provide more info if needed! Thanks in advance.

P D
  • 19
  • 4

1 Answers1

0

The reason for this was that the response size was too big for my Spring Application. I had to use the WebClient class using the 'ExchangeStrategies':

int size = 100000 * 1024;
ExchangeStrategies strategies = ExchangeStrategies.builder()
            .codecs(codecs -> codecs.defaultCodecs().maxInMemorySize(size))
            .build();

Also I had to set this property in the application.yml file:

spring:
    codec:
       max-in-memory-size: 100MB

These two adjustments fixed the request for me.

P D
  • 19
  • 4