返回信息流遇到一个问题,试用Jsoup解析的时候使用如下语句:
Document doc= Jsoup.connect(url).get();
发生异常,但是同样的代码在使用java run的时候就没有问题。
url自身亲自在浏览器上能打开并且能看到数据
环境使用eclipse 开发android项目时run android application发生该问题,但是在eclipse上使用java application就没有问题。
异常如下:
10-26 12:08:04.140: W/System.err(22542): android.os.NetworkOnMainThreadException
10-26 12:08:04.150: W/System.err(22542): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1148)
10-26 12:08:04.160: W/System.err(22542): at java.net.InetAddress.lookupHostByName(InetAddress.java:443)
10-26 12:08:04.160: W/System.err(22542): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:294)
10-26 12:08:04.160: W/System.err(22542): at java.net.InetAddress.getAllByName(InetAddress.java:214)
10-26 12:08:04.160: W/System.err(22542): at com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28)
10-26 12:08:04.160: W/System.err(22542): at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216)
10-26 12:08:04.160: W/System.err(22542): at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122)
10-26 12:08:04.160: W/System.err(22542): at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292)
10-26 12:08:04.160: W/System.err(22542): at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
10-26 12:08:04.160: W/System.err(22542): at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
10-26 12:08:04.160: W/System.err(22542): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
10-26 12:08:04.160: W/System.err(22542): at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
10-26 12:08:04.170: W/System.err(22542): at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:161)
10-26 12:08:04.170: W/System.err(22542): at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:571)
10-26 12:08:04.170: W/System.err(22542): at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:548)
10-26 12:08:04.170: W/System.err(22542): at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:235)
10-26 12:08:04.170: W/System.err(22542): at org.jsoup.helper.HttpConnection.get(HttpConnection.java:224)
10-26 12:08:04.170: W/System.err(22542): at com.steve.utils.FileUtils.foodMatch(FileUtils.java:228)
10-26 12:08:04.170: W/System.err(22542): at com.steve.foodtest.MainActivity.onCreate(MainActivity.java:19)
10-26 12:08:04.170: W/System.err(22542): at android.app.Activity.performCreate(Activity.java:5304)
10-26 12:08:04.170: W/System.err(22542): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1090)
10-26 12:08:04.170: W/System.err(22542): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2245)
10-26 12:08:04.170: W/System.err(22542): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2331)
10-26 12:08:04.170: W/System.err(22542): at android.app.ActivityThread.access$1000(ActivityThread.java:143)
10-26 12:08:04.170: W/System.err(22542): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244)
10-26 12:08:04.170: W/System.err(22542): at android.os.Handler.dispatchMessage(Handler.java:102)
10-26 12:08:04.170: W/System.err(22542): at android.os.Looper.loop(Looper.java:136)
10-26 12:08:04.180: W/System.err(22542): at android.app.ActivityThread.main(ActivityThread.java:5291)
10-26 12:08:04.180: W/System.err(22542): at java.lang.reflect.Method.invokeNative(Native Method)
10-26 12:08:04.180: W/System.err(22542): at java.lang.reflect.Method.invoke(Method.java:515)
10-26 12:08:04.180: W/System.err(22542): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
10-26 12:08:04.180: W/System.err(22542): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
10-26 12:08:04.180: W/System.err(22542): at dalvik.system.NativeStart.main(Native Method)
求教!!谢谢!
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #32465同步于 2016/10/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
有用过Jsoup的吗?
SKElemenT
2016/10/26镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
安卓 应该是4.0以后不能在主线程做网络请求(android.os.NetworkOnMainThreadException)。
1. 自己开个异步线程,如果需要更新界面参考Asynctask。如果只是简单处理数据用thread就可以。
2. 或者可以在网上找一个网络框架或者自己封一个。拿到数据后在用jsoup解析。