0

经过多次尝试,我决定再次问这个问题。在我的最后一个问题中,有人说我应该看看 Jsoup。我写了一些代码,但它不会工作。这是一个安卓应用程序。但它完全崩溃了。带有错误消息:

不幸的是,(appname)已停止

查看完整的错误消息

我从 <div> 中提取文本的代码:

 public void ButtonClick(View view) throws IOException {
    Document doc = dereference("here is my url");
    String text = extractContent(doc);
    updateUI(text);
}

private Document dereference(String uri) {
    Connection connection = Jsoup.connect(uri);
    return connection.get();
}

private String extractContent(Document doc) {
    Elements divs = doc.select("div.onlinestatus");
    return divs.text();
}

private void updateUI(String text) {
    TextView tv = (TextView)findViewById(R.id.textView1);
    tv.setText(text);
}

来自网址的输入:

<html><!-- [...] --><body>
    <div class='onlinestatus'>Server ist online! <br /></div>
</body></html>

有人能发现错误吗?

编辑:当我在一个单独的线程中执行所有这些操作时,我得到一个不同的错误。错误日志和代码可以在这里找到。

4

1 回答 1

0

毕竟这不是一个 Jsoup 问题。

如果您从错误日志(第一行)中查找错误

NetworkOnMainThreadException

谷歌搜索“ android NetworkOnMainThreadException ”从android开发者参考中得到一个页面,其中指出

当应用程序尝试在其主线程上执行网络操作时引发的异常。

这将解释您之前尝试将代码移动到单独的线程中,这似乎会产生不同的结果。
查看 android 开发者参考中建议的页面,关于响应性设计。那应该会给你一个答案。

下一件可能失败的事情是,您需要在创建 UI 的线程中进行所有 UI 更改。你在这里得到的 CalledFromWrongThreadException告诉你到底出了什么问题。查找该错误将引导您找到与此类似的问题+答案。

如果您对此有疑问,我建议您提出一个新问题,如果 StackOverflow 尚未涵盖您的问题(但我相信它是!)

于 2012-11-02T17:13:14.973 回答