簡體   English   中英

Java Servlet和HTTP響應對象

[英]Java Servlet and HTTP Response object

有關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)

謝謝,約翰

在服務器/ 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.

您是否要閱讀響應或請求的內容? 通常,除非您在這里有特殊情況,否則我們只寫響應的內容,而不閱讀它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM