2011-03-15 79 views
0

有关servlet中HttpResponse对象的问题。 HttpResponse的内容是否只能读取一次?Java Servlet和HTTP响应对象

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

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

感谢, 约翰

+0

我合并了您的两个Cookie帐户。请编辑您的问题以更新。 – Will 2011-03-17 13:17:05

回答

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. 
0

是否要读取响应或请求的内容?通常我们写回应的内容并且不读取它,除非你在这里有一个特例。