From d9b88261425cb98357008bb8116926abf8295851 Mon Sep 17 00:00:00 2001 From: Patrick Strawderman Date: Tue, 20 Jun 2023 20:18:32 -0700 Subject: [PATCH] Get content as String for ContentCachingRequestWrapper This commits adds a getContentAsString method to ContentCachingRequestWrapper that uses the configured charset without copying the underlying byte array. See gh-30709 --- .../web/util/ContentCachingRequestWrapper.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spring-web/src/main/java/org/springframework/web/util/ContentCachingRequestWrapper.java b/spring-web/src/main/java/org/springframework/web/util/ContentCachingRequestWrapper.java index 29b93e01a8b5..9c486030240c 100644 --- a/spring-web/src/main/java/org/springframework/web/util/ContentCachingRequestWrapper.java +++ b/spring-web/src/main/java/org/springframework/web/util/ContentCachingRequestWrapper.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.net.URLEncoder; +import java.nio.charset.Charset; import java.util.Arrays; import java.util.Enumeration; import java.util.Iterator; @@ -196,6 +197,14 @@ public byte[] getContentAsByteArray() { return this.cachedContent.toByteArray(); } + /** + * Return the cached request content as a String. The Charset used to decode + * the cached content is the same as returned by getCharacterEncoding. + */ + public String getContentAsString() { + return this.cachedContent.toString(Charset.forName(getCharacterEncoding())); + } + /** * Template method for handling a content overflow: specifically, a request * body being read that exceeds the specified content cache limit.