Android Studio中的JSOUP 1.9.1连接vs解析问题

时间:2016-05-24 02:52:35

标签: jsoup

所以我一直试图弄清楚如何让jsoup在Android工作室中进行网页抓取。我试图让它加载它从其他网站,如谷歌图像拉出的图片。

当我执行jsoup.parse("[anything]")时,它会运行,但不会加载任何内容,但如果我jsoup.connect("[anything]").get()并添加try-catch语句breaks
我已经按照了很多教程来看看我是否错误地加载了依赖项,但这不是问题。此时,我不确定为什么解析有效,但连接没有。

这是堆栈跟踪......

--- beginning of crash
06-06 20:52:40.220 2844-2844/com.[private].learnjsoup E/AndroidRuntime:FATAL EXCEPTION: main
                                                                      Process: com.[private].learnjsoup, PID: 2844
                                                                      java.lang.RuntimeException: Unable to start activity ComponentInfo{com.[private].learnjsoup/com.[private].learnjsoup.MainActivity}: android.os.NetworkOnMainThreadException
                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                          at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                          at android.os.Looper.loop(Looper.java:148)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                       Caused by: 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:563)
                                                                          at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540)
                                                                          at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227)
                                                                          at org.jsoup.helper.HttpConnection.get(HttpConnection.java:216)
                                                                          at com.shaynamehta.learnjsoup.MainActivity.onCreate(MainActivity.java:19)
                                                                          at android.app.Activity.performCreate(Activity.java:6237)
                                                                          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                          at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                          at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                          at android.os.Looper.loop(Looper.java:148) 
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                          at java.lang.reflect.Method.invoke(Native Method) 
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

1 个答案:

答案 0 :(得分:0)

  

我试图让它加载从其他网站上提取的图片(...)

以下是使用Jsoup加载图片的方法。

String imageUrl = "...";

Connection.Response response = Jsoup //
    .connect(imageUrl) //
    .ignoreContentType(true) // Needed for fetching image
    .execute();

byte[] imageData = response.bodyAsBytes();

另见