Я читаю xml-ответ, используя httpurlconnection. Я проанализировал ответ, используя JAXB. Я не закрыл соединение. Когда я снова попытаюсь прочитать URL-адрес, я получаю ошибку как входной поток. Должен ли я открывать соединение дважды или есть способ открыть соединение один раз и дважды прочитать ответ, а затем закрыть соединение?Соединение HTTPUrl автоматически закрыто
0
A
ответ
0
JAXB, вероятно, потребляет InputStream
, а затем закрывает его. Вам нужно будет использовать какой-то FilterInputStream
, чтобы он был буферизирован и многоразовый.
С Guava
, вы можете сделать что-то вроде
HttpURLConnection con = ...; // get it
InputStream in = con.getInputStream();
String content = CharStreams.toString(new InputStreamReader(in, Charsets.UTF_8));
Затем пройти новый InputStream
в JAXB сделаны из байтов content
.
InputStream inForJAXB = new ByteArrayInputStream(content.getBytes());
Вы можете сделать то же самое еще раз для любого другого компонента, который нуждается в содержание HttpURLConnection
входного потока.