[英]Exception dispatching input event with jsoup get url
When trying to parse a website using jsoup , the following onTouch
method always throws at Jsoup.parse(url, 3000);
当尝试使用jsoup解析网站时,以下
onTouch
方法始终抛出Jsoup.parse(url, 3000);
public boolean onTouch(View v, MotionEvent event) {
try {
URL url = new URL("http://www.google.com");
Document xmlDoc = Jsoup.parse(url, 3000);
Elements title = xmlDoc.select("title");
textView.setText(title.get(0).text());
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// ...
}
Logcat : Logcat :
03-01 09:44:08.901 23601-23601/com.takepickpicturedemo E/InputEventReceiver﹕ Exception dispatching input event.
03-01 09:44:08.902 23601-23601/com.takepickpicturedemo E/MessageQueue-JNI﹕ Exception in MessageQueue callback: handleReceiveCallback
03-01 09:44:08.903 23601-23601/com.takepickpicturedemo E/MessageQueue-JNI﹕ android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
at java.net.InetAddress.lookupHostByName(InetAddress.java:431)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
at java.net.InetAddress.getAllByName(InetAddress.java:215)
at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188)
at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157)
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100)
at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357)
at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:512)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:493)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:205)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:194)
at org.jsoup.Jsoup.parse(Jsoup.java:183)
at com.takepickpicturedemo.MainActivity.onTouch(MainActivity.java:449)
at android.view.View.dispatchTouchEvent(View.java:9290)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2403)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1737)
at android.app.Activity.dispatchTouchEvent(Activity.java:2765)
at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:59)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2364)
at android.view.View.dispatchPointerEvent(View.java:9514)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4230)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4096)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3787)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3844)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.vie
03-01 09:44:08.905 23601-23601/com.takepickpicturedemo D/AndroidRuntime﹕ Shutting down VM
JSOUP : 1.8.3 JSOUP :1.8.3
IDE : Android Studio 1.3.1 IDE :Android Studio 1.3.1
VM : Nexus 5 API23 x86 虚拟机 :Nexus 5 API23 x86
Looking at the stacktrace, it appears that you are trying to make a network call on the main thread ( NetworkOnMainThreadException
). 查看stacktrace,您似乎正在尝试在主线程上进行网络调用(
NetworkOnMainThreadException
)。 Try running the code inside the onTouch handler on a background thread, for instance using AsyncTask
尝试在后台线程上的onTouch处理程序中运行代码,例如使用
AsyncTask
You shouldn't use Jsoup for parsing the url directly. 您不应该使用Jsoup直接解析URL。
Internally, Jsoup uses HttpUrlConnection
for downloading the url content. 在内部,Jsoup使用
HttpUrlConnection
来下载URL内容。 On the Android Platform, this class has known issues and is slow. 在Android平台上,此类存在已知问题且运行缓慢。 You shouldn't use
AsyncTask
either. 您也不应该使用
AsyncTask
。 I don't even talk about HttpClient
. 我什至不谈论
HttpClient
。
Instead use Volley
. 而是使用
Volley
。 It is ten "times faster"(1) than traditional Android approaches for loading urls. 它比传统的Android网址加载方法快十倍(1)。 You can find a small sample code here: How to use Jsoup with Volley?
您可以在此处找到一个小的示例代码: 如何在Volley中使用Jsoup?
As the stacktrace in the question appears, it seems a hostname can't be resolved. 当出现问题中的stacktrace时,似乎无法解析主机名。
(1): " Volley got a score up to ten times better than the other alternatives (...) " (1): “ Volley的得分比其他选择高出十倍(...) ”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.