Ответ 1
Похоже, вам нужен фильтр сервлета. Нет стандартного способа обработки multipart/form-data
, поэтому вам нужно будет аккуратно кэшировать эти данные, когда завершает HttpServletRequest.
Можно ли получить необработанный HTTP-запрос из объекта HttpServletRequest? Я хочу видеть необработанный запрос как String, если это вообще возможно.
Мне нужно получить полный текст запроса, в этом случае это запрос POST, поэтому URL-адрес не поможет. Он также является частью многочастной формы, поэтому я не могу просто вызвать "getParameterNames()" или "getParameterValues ()".
Спасибо,
Похоже, вам нужен фильтр сервлета. Нет стандартного способа обработки multipart/form-data
, поэтому вам нужно будет аккуратно кэшировать эти данные, когда завершает HttpServletRequest.
Вы можете прочитать необработанный HTTP-запрос, выполнив:
ServletInputStream in = request.getInputStream();
а затем используйте обычные методы read
для InputStream.
Надеюсь, что это поможет.
Ну, похоже, вы делаете какие-то способы устранения неполадок. Почему бы просто не отбросить компонент формы из нескольких частей, пока вы смотрите на данные необработанной формы. Вы можете использовать следующий фрагмент 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);
%>
или если вы можете написать некоторый перехватчик, чтобы преобразовать имена и значения параметров в объект строкового формата и установить его в контексте запроса, или фильтр также является хорошей идеей.
Если вы хотите получить весь запрос к String, вы можете сделать это с помощью одной строки кода, используя библиотеку apache IOUtils.
String myString = org.apache.commons.io.IOUtils.toString(request.getInputStream());