Jsoup.connect()。get()仅占用Android上的部分html文件

时间:2016-08-10 23:16:45

标签: java android parsing jsoup

所以,我尝试解析维基百科,我的代码在计算机上运行良好。 所有,我改变了什么 - .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,这里没错。 如果你需要一些额外的信息,我当然会给它。

1 个答案:

答案 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());
        }
    }
}