0

I'm using HandlerInterceptor to do some processing afterCompletion of request, for that I need request body. Once I read it is not processing further.

@Component
public class GeneralInterceptor implements HandlerInterceptor {
    private static org.slf4j.Logger log = LoggerFactory.getLogger(GeneralInterceptor.class);
    private Map<String, String> jsonRequest;
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        if ("POST".equalsIgnoreCase(request.getMethod()) || "PUT".equalsIgnoreCase(request.getMethod())) {
            byte[] inputStreamBytes                     = StreamUtils.copyToByteArray(request.getInputStream());
            jsonRequest                                 = new ObjectMapper().readValue(inputStreamBytes, Map.class);
        }else {
            jsonRequest                                 = null;
        }
        return  true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle Interceptor");
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        if (ex != null) {
            ex.printStackTrace();
        }
        System.out.println("afterCompletion");
    }
}

How can I read request body without stopping further processing?

Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197

0 Answers0