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.

1 Answer 1

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.