diff --git a/spring-web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java b/spring-web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java index 6e4aed4717a3..8648f333c1e9 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java +++ b/spring-web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java @@ -99,13 +99,6 @@ protected String readInternal(Class clazz, HttpInputMessage in return new String(bytes, charset); } - @Override - protected Long getContentLength(String str, @Nullable MediaType contentType) { - Charset charset = getContentTypeCharset(contentType); - return (long) str.getBytes(charset).length; - } - - @Override protected void addDefaultHeaders(HttpHeaders headers, String s, @Nullable MediaType type) throws IOException { if (headers.getContentType() == null ) { @@ -125,7 +118,11 @@ protected void writeInternal(String str, HttpOutputMessage outputMessage) throws headers.setAcceptCharset(getAcceptedCharsets()); } Charset charset = getContentTypeCharset(headers.getContentType()); - StreamUtils.copy(str, charset, outputMessage.getBody()); + byte[] strBytes = str.getBytes(charset); + if (!headers.containsHeader(HttpHeaders.TRANSFER_ENCODING)) { + headers.setContentLength(strBytes.length); + } + StreamUtils.copy(strBytes, outputMessage.getBody()); }