AsyncTask返回null

时间:2012-12-22 17:44:46

标签: android jsoup asynctaskloader

我正在使用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();

我猜这个文件总是空的。我的代码出了什么问题? 谢谢你的帮助。

4 个答案:

答案 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输出。