繁体   English   中英

Jsoup.connect()使用Java而不是Android

[英]Jsoup.connect() working with Java, not with Android

我已经尝试了Jsoup.connect()网站上给出的Jsoup.connect()示例,它在Java中运行良好。

出于某种原因,即使我在AndroidManifest允许Internet访问权限,我也无法在Android项目(Eclipse)中使用它。 Jsoup库已正确安装,我可以使用Jsoup.parse()而不会出现任何问题。 这里有几行代码可以在Java中运行,也可以在AndroidManifest

Java的

public static void main(String[] args){
    Document doc;
    try {
        doc = Jsoup.connect("http://google.ca/").get();
        String title = doc.title();
        System.out.print(title);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

AndroidManifest.xml中

<uses-sdk android:minSdkVersion="12" />
<uses-permission android:name="android.permission.INTERNET"/>
<application

当我尝试运行它时,它会崩溃并且日志会显示:

01-09 20:19:30.560: E/AndroidRuntime(26839): java.lang.RuntimeException: 
Unable to start activity 
ComponentInfo{com.mrdroidinator.com/com.mrdroidinator.com.Parselhjmq}: android.os.NetworkOnMainThreadException

http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

问题是您正在主线程上执行网络操作,这在API级别11+中是禁止的。 这是因为如果你这样做,UI将被“冻结”,直到文档完成下载,因此需要在不同的线程上执行此类操作,这不会影响UI性能。

这是你开始一个新线程的方式:

Thread downloadThread = new Thread() {
  public void run() {
    Document doc;
    try {
      doc = Jsoup.connect("http://google.ca/").get();
      String title = doc.title();
          System.out.print(title);
    } catch (IOException e) {
          e.printStackTrace();
    }
  }
};
downloadThread.start();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM