Using Spring RestTemplate, buffer request body set to false and empty body
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setBufferRequestBody(false);
requestFactory.setConnectTimeout(60_000);
RestTemplate restTemplate = RestTemplate(requestFactory);
restTemplate.exchange(uri, HttpMethod.PUT, new HttpEntity<>(httpHeaders), Void.class);
I receive 411 - Length Required status code in response.
For some reason Spring RestTemplate does not put Content-Length: 0 header on the request.
In case I comment requestFactory.setBufferRequestBody(false); line, it works perfect. But I need it for sending large files.
UPD: Looking into debug logs showed us, that request doesn't contain Content-Length header.
I managed to replicate your issue with
RestTemplateandSimpleClientHttpRequestFactory. After switching to Apache HttpComponents HttpClient the issue is gone.Here you are how I configured
RestTemplate:Hope it helps.