2011-03-15 5 views
0

서블릿의 HttpResponse 객체에 대한 질문. HttpResponse의 내용을 한 번만 읽을 수 있습니까?자바 서블릿 및 HTTP 응답 객체

그래서 내가로부터 XML/JSON을 검색 할 내용을 읽을 필요로 HttpResponse에 객체의 내용을 읽을하기 위해 사용자에 필터와 "javax.servlet.http.HttpServletResponseWrapper"어떤 형태로든해야하는 경우 응답? 지금은 내가 HttpResponse 객체를 읽을 때 예외를 얻는 순간입니다.

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

감사합니다, 존

+0

두 개의 쿠키 계정을 병합했습니다. 업데이트 할 질문을 편집하십시오. – Will

답변

1

이 서버/서블릿 측면에서 문제가되지 않습니다. 그것은 클라이언트 측의 문제입니다. 서블릿은 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

응답 또는 요청의 내용을 읽고 싶습니까? 대개 특별한 경우가 아니라면 응답의 내용을 쓰고 읽지 않습니다.