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?