[英]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.