所以,我尝试解析维基百科,我的代码在计算机上运行良好。 所有,我改变了什么 - .connect()。get在AsyncTask中,但我只得到了html文件的一部分(没有" body",只有一半的第二个"脚本"在&#中34;标题")我无法理解为什么。 这是我的Android代码示例。
protected String doInBackground(String... params) {
try {
Document doc = Jsoup.connect(params[0]).get();
return doc.toString();
} catch (IOException e) {
//...
e.printStackTrace();
}
return null;
}
这很简单。
String url = "https://en.wikipedia.org/wiki/Protectorate";
Document doc = null;
try {
doc = Jsoup.connect(url).get();
} catch (IOException e) {
//...
e.printStackTrace();
}
我查了一下,params [0]是https://en.wikipedia.org/wiki/Protectorate,这里没错。 如果你需要一些额外的信息,我当然会给它。
答案 0 :(得分:1)
Logcat在这里欺骗我们,因为它缩短了消息(我假设您使用logcat检查了字符串?请参阅related question)
如果将结果字符串拆分为块,您将看到整个页面已加载。尝试将类似此logAll
函数的内容添加到AsyncTask类中以查看完整输出:
private class DownloadTask extends AsyncTask<String, Integer, String> {
Document doc = null;
protected String doInBackground(String... params) {
try {
doc = Jsoup.connect(params[0]).get();
return doc.toString();
} catch (Exception e) {
e.printStackTrace();
}
return doc.toString();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
logAll("async",doc.toString());
}
void logAll(String TAG, String longString) {
int splitSize = 300;
if (longString.length() > splitSize) {
int index = 0;
while (index < longString.length()-splitSize) {
Log.e(TAG, longString.substring(index, index + splitSize));
index += splitSize;
}
Log.e(TAG, longString.substring(index, longString.length()));
} else {
Log.e(TAG, longString.toString());
}
}
}