我正在使用httpurlconnection读取xml响应。我使用JAXB解析了响应。我没有关闭连接。当我再次尝试从URL读取时,我收到错误作为输入流。我是否必须打开连接两次,或者有没有办法打开连接一次并读取响应两次然后关闭连接?
答案 0 :(得分:0)
JAXB可能会使用InputStream
,然后将其关闭。您需要使用某种FilterInputStream
,以便它可以缓冲并重复使用。
使用Guava
,您可以执行类似
HttpURLConnection con = ...; // get it
InputStream in = con.getInputStream();
String content = CharStreams.toString(new InputStreamReader(in, Charsets.UTF_8));
然后将新的InputStream
传递给由content
的字节组成的JAXB。
InputStream inForJAXB = new ByteArrayInputStream(content.getBytes());
对于需要HttpURLConnection
输入流内容的任何其他组件,您可以再次执行相同的操作。