Получите строку необработанного запроса от HttpServletRequest - PullRequest
14 голосов
/ 27 августа 2009

Можно ли получить необработанный HTTP-запрос от объекта HttpServletRequest? Я хочу видеть необработанный запрос как строку, если это вообще возможно.

Мне нужно получить полный текст запроса, в данном случае это запрос POST, поэтому URL-адрес не помогает. Он также является частью многочастной формы, поэтому я не могу просто вызвать getParameterNames () или getParameterValues ​​().

Спасибо,

Ответы [ 5 ]

9 голосов
/ 11 марта 2010

Вы можете прочитать необработанный HTTP-запрос, выполнив:

ServletInputStream in = request.getInputStream();

, а затем используйте обычные read методы InputStream.

Надеюсь, это поможет.

4 голосов
/ 29 августа 2009

Ну, похоже, вы делаете какие-то проблемы. Почему бы просто не удалить компонент формы, состоящий из нескольких частей, пока вы смотрите на необработанные данные формы. Для построения данных формы можно использовать следующий фрагмент JSP.

<%
Enumeration en = request.getParameterNames();
String str = "";
while(en.hasMoreElements()){
   String paramName = (String)en.nextElement();
   String paramValue = request.getParameter(paramName);
   str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue);
}
if (str.length()>0)
   str = str.substring(1);
%>
1 голос
/ 27 августа 2009

или если вы можете написать некоторый перехватчик для преобразования имен и значений параметров в объект строкового формата и установить его в контексте запроса, или фильтр тоже хорошая идея.

0 голосов
/ 02 декабря 2016

Если вы хотите получить весь запрос к строке, вы можете сделать это с помощью одной строки кода, используя библиотеку apache IOUtils.

String myString = org.apache.commons.io.IOUtils.toString(request.getInputStream());
0 голосов
/ 27 августа 2009

Похоже, вам нужен фильтр сервлетов . Не существует стандартного способа обработки multipart/form-data, поэтому вам нужно позаботиться о надлежащем кэшировании этих данных при обертывании HttpServletRequest .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...