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

我已经尝试了Jsoup.connect()在Jsoup网站上给出的例子,它在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 

Solutions Collecting From Web of "Jsoup.connect()使用Java,而不是使用Android"

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

问题是您正在主线程上执行networking操作,这在API级别11+中是禁止的。 这是因为如果你这样做的话,用户界面是“冻结的”,直到文件完成下载,所以需要在不同的线程上执行这样的操作,这不会影响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();