Чтобы прочитать запрос несколько раз, вам нужно будет кэшировать ваш запрос, прежде чем он будет прочитан в первый раз. Дополнительную информацию можно прочитать здесь .
Spring MVC предоставляет класс ContentCachingRequestWrapper. Это обертка вокруг оригинального объекта HttpServletRequest.
Чтобы использовать его, мы должны сначала создать веб-фильтр, который оборачивает оригинальный запрос HttpServletRequest:
@Component
public class CachingRequestBodyFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest currentRequest = (HttpServletRequest) servletRequest;
ContentCachingRequestWrapper wrappedRequest = new ContentCachingRequestWrapper(currentRequest);
chain.doFilter(wrappedRequest, servletResponse);
}
После чего вы можете получить содержимое byte [] с помощью метода getContentAsByteArray ContentCachingRequestWrapper в вашем перехватчик.