使用URLConnection时关闭android-stream

时间:2015-12-20 14:48:15

标签: android android-asynctask

我有一个asynctask,这是背景中的代码:

try {
                URL url = new URL(urls);
                Log.v("this", urls);
                URLConnection conn = url.openConnection();

                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                DocumentBuilder builder = factory.newDocumentBuilder();
                Document doc = builder.parse(conn.getInputStream());

                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                String lineC;
                StringBuffer sb = new StringBuffer();
                while ((lineC = bufferedReader.readLine()) != null)
                {
                    sb.append(lineC );
                }
                Log.v("this",sb.toString() + " I need this for something else");

                NodeList nodes = doc.getElementsByTagName("data");
                for (int i = 0; i < nodes.getLength(); i++) {
                    Element element = (Element) nodes.item(i);
                    NodeList title = element.getElementsByTagName("content");
                    Element line = (Element) title.item(0);
                    if (i == 0)
                        random = line.getTextContent();
                    else if (i == 1)
                        topsell = line.getTextContent();
                    else if (i == 2)
                        jadidtarin = line.getTextContent();
                    else if (i == 3)
                        pishnahad = line.getTextContent();
                }


            } catch (Exception e) {
                e.printStackTrace();
                goterror = true;
                Log.v("this", e.getMessage() + "eror");
            }

当我删除这些行时,它工作正常,我没有问题。

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                String lineC;
                StringBuffer sb = new StringBuffer();
                while ((lineC = bufferedReader.readLine()) != null)
                {
                    sb.append(lineC );
                }

我没有关闭任何东西,但是当我运行代码时,我收到此错误“Stream is closed”,我不知道为什么。

我该如何解决这个问题?正如我在代码中所说,我需要保存整个返回值。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

而不是使用:

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

使用

BufferedReader bufferedReader = new BufferedReader(new BufferedInputStream(conn.getInputStream()));