2013-09-08 3 views
0

Я читаю xml-ответ, используя httpurlconnection. Я проанализировал ответ, используя JAXB. Я не закрыл соединение. Когда я снова попытаюсь прочитать URL-адрес, я получаю ошибку как входной поток. Должен ли я открывать соединение дважды или есть способ открыть соединение один раз и дважды прочитать ответ, а затем закрыть соединение?Соединение HTTPUrl автоматически закрыто

ответ

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 входного потока.