2015-05-06 5 views
0

как я могу изменить тело сообщения запроса на уровне фильтров. Можем ли мы изменить тело сообщения нашим пользовательским сообщением, используя RequestWrapper.Измените тело сообщения запроса

+0

http://stackoverflow.com/a/1561963/174184 –

+0

@ TJ- - как это связано с этим? Я имею в виду, там вы читаете тело, но редактирования вообще нет. – Nenotlep

ответ

1

Короткий ответ: да.

Однако, вы не изменяете оригинал тела запроса; вместо этого вы можете вернуть другое тело из оболочки запроса, и сервлет просто будет работать с этим.

Как вы это сделаете, просто перепишите метод getInputStream()HttpServletRequestWrapper и верните измененную версию оригинала InputStream.

Чтобы убедиться, что вы удаляете какой-либо след исходного тела, вы можете также перезаписать getReader(). Стандартные реализации вернут BufferedReader по вашему InputStream, когда вас попросят читателя, но - это макетные реализации (как в тесте весны), которые этого не делают.

+0

как я могу вернуть другое тело для запроса –

+0

Я попытался ответить с изменениями на мое сообщение выше: вы должны перезаписать 'getInputStream()' (и 'getReader()', поэтому вы не будете полагаться на базовый 'HttpServletRequest «поведение реализации». –

+0

Я использую async-фильтры для чтения post-запроса, и как только я получу все данные, я должен переслать эти данные в базовый сервлет для обработки. Как мне это сделать –

Смежные вопросы