gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:20:51 27 4
gpt4 key购买 nike

如何将 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com