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,我无法全部注销。
我一直在学习 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,我无法全部注销。