1

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

4 回答 4

2

代码没有问题。请使用Document.text();您可以尝试更改要检查的一行吗? doc =Jsoup.connect("http://stackoverflow.com").get();然后Document.text()在您的日志中使用。

于 2012-12-22T17:57:51.397 回答
1

AsyncTask.execute()不返回结果。相反,它返回对任务本身的引用。结果仅onPostExecute在任务完成后对方法可用。

于 2012-12-22T17:49:47.277 回答
0

问题出在代码try catch块内的某个地方。Jsoup而不是printStackTrace,用 记录一些东西Log.e,然后检查您的 LogCat 输出。

于 2012-12-22T18:00:10.543 回答
0

该代码中的许多可能会出错:

url[0]

可以是空字符串...

我将该声明拆分为:

Jsoup.connect(url[0])

+

.data("query", "Java")
                            .userAgent("Mozilla")
                            .cookie("auth", "token")
                            .timeout(10000)
  • 。邮政();

至少

于 2012-12-22T17:49:13.103 回答