Wie erhalte ich die XML aus der POST-Anforderung und ändere sie im Servlet-Filter?

Ich arbeite derzeit an einer Anforderung, bei der ich das XML (von der POST-Anforderung) im Servlet-Filter abrufen muss, bevor die Anforderung den Spring-Controller erreicht, und dann das XML (Abschneiden einiger leerer Knoten / Elemente) in verarbeiten muss der filter und dann der aufruf sollte weiter gehen.

Ich habe den folgenden Code ausprobiert (nur als Snippet beigefügt) und konnte den Anforderungshauptteil (XML) abrufen und die geänderte Antwort festlegen.

    HttpServletRequest httpRequest = (HttpServletRequest) request;
    HttpServletResponse httpResponse = (HttpServletResponse) response;
    if (httpRequest.getMethod().equalsIgnoreCase("POST")) {
      extractDataFromRequest(httpRequest);
      httpResponse.getWriter().write("<root><root>");
    }
    chain.doFilter(request, wrappedResponse);

   public static String extractDataFromRequest(HttpServletRequest request) throws IOException {

    String line;
    StringBuilder builder = new StringBuilder();
    BufferedReader reader = request.getReader();
    while ((line = reader.readLine()) != null) {
      builder.append(line);
    }
    return builder.toString();
  }

Der Frühling schlug jedoch mit der folgenden Ausnahme fehl.

Severe: java.lang.IllegalStateException: PWC3997: getReader() has already been called for this request
    at org.apache.catalina.connector.Request.getInputStream(Request.java:1178)
    at org.apache.catalina.connector.RequestFacade.getInputStream(RequestFacade.java:407)
    at org.springframework.http.server.ServletServerHttpRequest.getBody(ServletServerHttpRequest.java:165)
    at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:120)
    at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:100)

ch bin auf der Suche nach einer konkreten Umsetzung dieser Anforderung durch Experte

Antworten auf die Frage(4)

Ihre Antwort auf die Frage