从HttpServletRequest对象中获取原始的HTTP请求是否可能?如果可能,我希望将原始请求作为字符串查看。
我需要获取请求的完整文本,此处为POST请求,因此URL无法帮助。它还是多部分表单的一部分,因此我不能只调用"getParameterNames()"或"getParameterValues()"。
谢谢。
从HttpServletRequest对象中获取原始的HTTP请求是否可能?如果可能,我希望将原始请求作为字符串查看。
我需要获取请求的完整文本,此处为POST请求,因此URL无法帮助。它还是多部分表单的一部分,因此我不能只调用"getParameterNames()"或"getParameterValues()"。
谢谢。
你可以通过以下方式读取原始的 HTTP 请求:
ServletInputStream in = request.getInputStream();
然后使用InputStream的常规read
方法。
希望能有所帮助。
听起来你在进行一些故障排除。为什么不在查看原始表单数据时放弃多部分表单组件呢?您可以使用以下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 myString = org.apache.commons.io.IOUtils.toString(request.getInputStream());
听起来你需要一个servlet过滤器。没有标准的处理multipart/form-data
的方法,所以当包装HttpServletRequest时,你必须注意适当地缓存这些数据。
multipart/form-data
的支持。http://download.oracle.com/javaee/6/api/javax/servlet/annotation/MultipartConfig.html - McDowell