android: java.io.IOException: поток закрыт

Я читаю данные xml с сервера и анализирую их, во время чего получаю следующее исключение.

05-07 12:37:31.904: W/System.err(2765): java.io.IOException: stream closed
05-07 12:37:31.907: W/System.err(2765):     at libcore.net.http.AbstractHttpInputStream.checkNotClosed(AbstractHttpInputStream.java:68)
05-07 12:37:31.908: W/System.err(2765):     at  at libcore.net.http.ChunkedInputStream.read(ChunkedInputStream.java:41)
05-07 12:37:31.908: W/System.err(2765):     at java.io.InputStreamReader.read(InputStreamReader.java:244)
05-07 12:37:31.908: W/System.err(2765):     at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1496)
05-07 12:37:31.909: W/System.err(2765):     at org.kxml2.io.KXmlParser.readName(KXmlParser.java:1543)
05-07 12:37:31.909: W/System.err(2765):     at org.kxml2.io.KXmlParser.parseStartTag(KXmlParser.java:1045)
05-07 12:37:31.909: W/System.err(2765):     at org.kxml2.io.KXmlParser.next(KXmlParser.java:369)
05-07 12:37:31.909: W/System.err(2765):     at org.kxml2.io.KXmlParser.next(KXmlParser.java:310)

мой код

**private static InputStream downloadUrl(String urlString) throws IOException {
        System.setProperty("http.keepAlive", "false");

**///// added after some search about this exception, but it didnt fix the issue fo**r me 

        URL url = new URL(urlString);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        //conn.setReadTimeout(10000 /* milliseconds */);
        conn.setConnectTimeout(15000 /* milliseconds */);
        conn.setRequestMethod("GET");
        conn.setDoInput(true);
        // Starts the query
        conn.connect();
        return conn.getInputStream();
    }**


XmlPullParser parser = getParser(in);
parser.require(XmlPullParser.START_TAG, ns, "response");

            while (parser.next() != XmlPullParser.END_TAG) {
........
}

синтаксический анализ выполняется успешно для первых нескольких записей в файле xml, а затем возникает исключение


person png    schedule 07.05.2013    source источник
comment
проблема с бэкендом?   -  person Blackbelt    schedule 07.05.2013
comment
я могу прочитать первые несколько записей xml. Так что нет проблем с подключением или разрешениями.   -  person png    schedule 07.05.2013
comment
backend — это сервер, на который вы получаете информацию. Может быть, это он замыкает связь   -  person Blackbelt    schedule 07.05.2013
comment
Возможно, вы повторно используете объект InputStream в любом месте... посмотрите код...   -  person Pankaj Kumar    schedule 07.05.2013


Ответы (1)


Проблема была с XmlPullParser . У него есть некоторые известные проблемы при загрузке больших файлов. Я изменил синтаксический анализ XML, чтобы использовать DOM. http://developer.android.com/reference/javax/xml/parsers/package-summary.html и это сработало

person png    schedule 08.05.2013