Java Servlet和HTTP Response对象

时间:2011-03-15 16:50:08

标签: java servlets httpclient

关于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)

谢谢, 约翰

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

您想阅读回复或请求的内容吗?通常我们会写回复的内容而不读它,除非你在这里有一个特例。