XML 仅在 Android 上部分下载 Groovy

XML only partially downloading on Android with Groovy

我一直在学习 Tim Buchalka 在 Udemy 上的 "Learn Android Lolipop Development" 课程。他在 Java 教 class,但我认为在 groovy 教它会是一个很好的学习经历。话虽这么说,我已经到了他正在创建一个应用程序的地步,该应用程序可以从 Apple's Website

下载前 10 个免费应用程序 XML

我编写的下载 XML 的应用程序部分是:

public class XMLDownloader extends AsyncTask<Object, Void, String>{
String myXMLData

@Override
protected String doInBackground(Object... urls) {
    try {
        myXMLData = downloadXML((String) urls[0])
    }
    catch (IOException e) {
        return "Unable to download XML file"
    }
    return ""
}

protected void onPostExecute(String result) {
    Log.d("OnPostExecute", myXMLData)
}

String downloadXML(String url) throws IOException {

    String xmlContents = ""

    BufferedReader reader

    try {
        reader = new URL(url).openStream().newReader()

        while (reader.any()) {
            xmlContents += "${reader.readLine()}\n"
        }

        return xmlContents;

    } catch (Exception e) {
        e.printStackTrace()
        return null
    } finally {
        reader?.close()
    }

}
}

出于某种原因,它似乎没有下载完整的 XML。

protected void onPostExecute(String result) {
    Log.d("OnPostExecute", myXMLData)
}

只打印前 31 行。仅下载前 31 行使得解析 XML 变得不可能。

使用XmlPullParser解析,得到

06-22 14:58:17.245 30926-30926/com.lategame.top10downloader W/System.err﹕ org.xmlpull.v1.XmlPullParserException: expected: /entry read: summary (position:END_TAG @17:54 in java.io.StringReader@158cb17f)

什么可能导致 XML 仅部分下载?

此外,请忽略我使用 AsyncTask<Object, Void, String> 并转换为 String 而不是使用 AyncTask<String, Void, String> 的事实。这是解决另一个问题的方法。

您可以将 downloadXml 重写为

String downloadXML(String url) {
    new URL(url).text
}

显然罪魁祸首是 logcat 日志的最大长度。 它正在下载完整的 XML,我无法全部注销。