diff --git a/axzo-common-loggings/axzo-common-trace/src/main/java/com/axzo/framework/trace/wrapper/BodyReaderHttpServletRequestWrapper.java b/axzo-common-loggings/axzo-common-trace/src/main/java/com/axzo/framework/trace/wrapper/BodyReaderHttpServletRequestWrapper.java index 5f252ab..87e7021 100644 --- a/axzo-common-loggings/axzo-common-trace/src/main/java/com/axzo/framework/trace/wrapper/BodyReaderHttpServletRequestWrapper.java +++ b/axzo-common-loggings/axzo-common-trace/src/main/java/com/axzo/framework/trace/wrapper/BodyReaderHttpServletRequestWrapper.java @@ -9,8 +9,10 @@ import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.Part; +import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -33,8 +35,7 @@ public class BodyReaderHttpServletRequestWrapper extends HttpServletRequestWrapp super(request); this.request = request; // request.getParameterMap(); - String sessionStream = getBodyString(request); - body = sessionStream.getBytes(Charset.forName("UTF-8")); + body = getBodyBytes(request); } @@ -44,6 +45,20 @@ public class BodyReaderHttpServletRequestWrapper extends HttpServletRequestWrapp return request.getParts(); } + private byte[] getBodyBytes(ServletRequest request) throws IOException { + try (BufferedInputStream bis = new BufferedInputStream(request.getInputStream()); + ByteArrayOutputStream baos = new ByteArrayOutputStream()) { + byte[] buffer = new byte[1024]; + int len; + while ((len = bis.read(buffer)) > 0) { + baos.write(buffer, 0, len); + } + return baos.toByteArray(); + } catch (IOException ex) { + throw ex; + } + } + private String getBodyString(ServletRequest request) throws IOException { StringBuilder sb = new StringBuilder(); InputStream ins = request.getInputStream();