使用Jsoup取消引用URI时,应用程序崩溃

时间:2012-11-02 16:55:11

标签: android crash jsoup

经过多次尝试,我决定再问一次这个问题。在my last question,有人说我应该看看Jsoup。我写了一些代码,但它不起作用。这是一个Android应用程序。但它完全崩溃了。错误消息:

  

不幸的是,(appname)已停止

请参阅full error message

我的代码用于从< 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>

有人能发现错误吗?

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

1 个答案:

答案 0 :(得分:0)

毕竟这不是一个Jsoup问题。

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

  

NetworkOnMainThreadException

Google搜索“android NetworkOnMainThreadException”,并page from the android developer reference表示

  

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

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

接下来可能失败的是,您需要在创建UI的线程中进行所有UI更改。你得到的CalledFromWrongThreadException here告诉你究竟出了什么问题。查找该错误会引出一个问题+答案,类似于this一个。

如果您遇到问题,我建议您提出一个新问题,如果您的问题尚未涵盖在StackOverflow上(但我相信它是!)