java - 如何将 HttpServletRequest 转换为字符串?

标签 java servlets

如何将 HttpServletRequest 转换为 String?我需要解码 HttpServletRequest 但当我尝试这样做时,我的程序抛出异常。

 javax.xml.bind.UnmarshalException
 - with linked exception:
[java.io.IOException: Stream closed]
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:197)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:168)
        at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
        at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:184)
        at com.orange.oapi.parser.XmlParsing.parse(XmlParsing.java:33)

我尝试了以下代码来解码​​ HttpServletRequest

InputStreamReader is =
                new InputStreamReader(request.getInputStream());
InputStream isr = request.getInputStream();
ServletInputStream req = request.getInputStream();

我的解析器方法:

public root parse(InputStreamReader is) throws Exception {
        root mc = null;
        try {
            JAXBContext context = JAXBContext.newInstance(root.class);
            Unmarshaller um = context.createUnmarshaller();
            mc = (root) um.unmarshal(is);
        } catch (JAXBException je) {
            je.printStackTrace();
        }
        return mc;
    }

最佳答案

我的印象是您在处理请求并响应客户后尝试从输入流中读取数据。你把代码放在哪里了?

如果你想先处理请求,然后再进行解码,你需要先将输入流读入一个字符串。如果您正在处理的是小请求,这会很好地工作。

我建议使用像 apache commons IOUtils 这样的东西来为你做这件事。

String marshalledXml = org.apache.commons.io.IOUtils.toString(request.getInputStream());

另外请记住,您必须在 request.getParameter(name)request.getInputStream 之间做出选择。您不能同时使用两者。

关于java - 如何将 HttpServletRequest 转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12260540/

相关文章:

java - JSP 异常, "quote symbol expected"

java - 如何根据元素属性从 PriorityQueue 中删除元素?

java - Android内存使用显示错误信息

java - 意外的 Servlet 缓存

java - 图像 Servlet 图像返回 null

流模式下的 java.net.HttpRetryException : cannot retry due to server authentication,

java - 在实际应用程序生活中使用向下转型

Java - 如何获得独立于系统日期的当前日期?

java - 类中的 getter 和 setter?

java - 对于我的 Java Web 应用程序,这是一种合理的方法吗?