The example use springboot 3.0 is normal, but use springboot 3.3 have exception. Maybe it is different from #31902

detail error: org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://someurl/api/": insufficient data written at org.springframework.web.client.RestTemplate.createResourceAccessException(RestTemplate.java:915) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:895) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:830) at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:691)

example code:

try { URI uri = getUri(request, method);

    HttpHeaders headers = new HttpHeaders();
    Enumeration<String> headerNames = request.getHeaderNames();
    //set head from request 
    HttpEntity httpEntity = new HttpEntity<>(body, headers);
    ClientHttpRequestFactory clientHttpRequestFactory = (new SimpleClientHttpRequestFactory() {
         //... 
    });

    ClientHttpRequestFactory factory = new BufferingClientHttpRequestFactory(clientHttpRequestFactory); // already use BufferingClientHttpRequestFactory

    RestTemplate restTemplate = new RestTemplate(factory);
    ResponseEntity serverResponse = null;

    serverResponse = restTemplate.exchange(uri, method, httpEntity, String.class); //this line have ResourceAccessException : insufficient data written

    // ... other
} catch (Exception e) {
    logger.error("", e);
}
return ResponseEntity.badRequest().build();

Comment From: bclozel

Duplicates https://github.com/spring-projects/spring-framework/issues/33015