我正在使用jsoup来解析一个HTML代码,我显然使用的是AsyncTask,但它返回null(javanullpointerexception)。
private class LoadDocument extends AsyncTask<String, Void, Document>
{
ProgressDialog mProgressDialog;
@Override
protected void onPreExecute() {
mProgressDialog = ProgressDialog.show(Parser.this, "Loading...", "Recuperation donnees...");
}
@Override
protected Document doInBackground(String... url) {
url[0] = urll;
try {
document = Jsoup.connect(url[0])
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(10000)
.post();
} catch (IOException e) {
e.printStackTrace();
}
return document;
}
@Override
protected void onPostExecute(Document result) {
document=result;
mProgressDialog.dismiss();
}
}
然后执行任务并返回文档:
urll= //the website
document=new LoadDocument().execute(urll).get();
我猜这个文件总是空的。我的代码出了什么问题? 谢谢你的帮助。
答案 0 :(得分:2)
代码没有问题。请使用Document.text();
进行登录。您是否可以尝试更改一行来检查:doc = Jsoup.connect("http://stackoverflow.com").get();
然后在日志中使用Document.text()
。
答案 1 :(得分:1)
AsyncTask.execute()
不会返回结果。相反,它返回对任务本身的引用。结果仅在任务完成后才可用于onPostExecute
方法。
答案 2 :(得分:0)
许多代码可能出错:
url[0]
可以是空字符串......
我会将该陈述拆分为:
Jsoup.connect(url[0])
+
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(10000)
.POST();
至少
答案 3 :(得分:0)
问题出现在try catch
代码周围的Jsoup
块内。而不是printStackTrace
,而是使用Log.e
记录某些内容,然后检查LogCat输出。