Как получить необработанные данные POST в контроллере Spring Boot - PullRequest
1 голос
/ 25 марта 2019

У меня есть простой класс контроллера extends AbstractController, который я подключаю к механизму отображения обработчика Spring, создавая новый компонент SimpleUrlHandlerMapping.

В моем классе мне нужно читать необработанные данные POST, даже когда Content-Type равен application/x-www-form-urlencoded. Это несколько сложно в спецификации Servlet, потому что для этого вам нужно вызвать request.getInputStream() или request.getReader() до того, как вы получите доступ к любому из request.getParameter*() методов. В противном случае последний будет использовать входной поток, и он больше не будет доступен.

В моем классе я не вызываю ни один из getParameter*() методов, но я все еще вижу пустое тело запроса, когда Content-Type равен application/x-www-form-urlencoded. Это означает, что Spring вызывает один из getParameter*() методов, прежде чем он передает управление моему классу.

Какой класс это делает и как я могу предотвратить это?


(Примечание для чрезмерно усердных редакторов: этот вопрос относится только к Spring Boot. Он не является дубликатом других вопросов «необработанных данных POST».)

1 Ответ

1 голос
/ 25 марта 2019

Нашел это.

Мне просто нужно было отключить HiddenHttpMethodFilter, который я в любом случае не использую:

spring.mvc.hiddenmethod.filter.enabled=false
...