【问题标题】:Java Servlet and HTTP Response objectJava Servlet 和 HTTP 响应对象
【发布时间】:2011-03-15 16:50:08
【问题描述】:

关于 servlet 中的 HttpResponse 对象的问题。 HttpResponse 的内容只能读取一次吗?

如果是这样,我需要使用过滤器和某种形式的“javax.servlet.http.HttpServletResponseWrapper”来读取 HttpResponse 对象的内容,因为我需要读取其内容以从响应中检索 XML/JSON ?目前,当我去读取 HttpResponse 对象时,我得到了以下异常。

     Content has been consumed
at org.apache.http.entity.BasicHttpEntity.getContent(BasicHttpEntity.java:84)

谢谢, 约翰

【问题讨论】:

  • 我合并了你的两个 cookie 帐户。请编辑您的问题以进行更新。

标签: java servlets httpclient


【解决方案1】:

这在服务器/servlet 端不是问题。这是客户端的问题。 servlet 不会将HttpServletResponse 对象发送给客户端或其他东西,它只发送一次字节流。您只需将其读入一次可重用对象,例如 byte[] 或 String,具体取决于实际内容,然后在代码的剩余部分中重用/复制该对象。

InputStream input = httpResponse.getEntity().getContent();
ByteArrayOutputStream output = new ByteArrayOutputStream(); // Or some file?
IOUtils.copy(input, output);
byte[] content = output.toByteArray();
// Now you can reuse content as many times as you want.

【讨论】:

    【解决方案2】:

    您想阅读响应或请求的内容吗?通常我们把响应的内容写出来不看,除非你这里有特殊情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 2016-07-22
      • 2011-08-09
      • 2018-06-25
      相关资源
      最近更新 更多