【问题标题】:JSOUP 1.9.1 in Android Studio connect vs parse issueAndroid Studio 中的 JSOUP 1.9.1 连接与解析问题
【发布时间】:2016-06-07 09:57:37
【问题描述】:

所以我一直试图弄清楚如何让 jsoup 在 Android Studio 中工作以进行网络抓取。我试图让它加载它从另一个网站(如谷歌图片)提取的图片。

当我执行 jsoup.parse("[anything]") 时,它会运行,但不会加载任何内容,但如果我执行 jsoup.connect("[anything]").get() 并添加 try-catch 语句,则它是 breaks

我已经学习了许多教程看看我是否错误地加载了依赖项,但这不是问题。在这一点上,我不确定为什么 parse 有效,但 connect 没有。

这是堆栈跟踪...

--- 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) 

【问题讨论】:

  • 你能在你的帖子中添加堆栈跟踪吗?

标签: jsoup


【解决方案1】:

我正试图让它加载它从另一个站点提取的图片(...)

这里是如何使用 Jsoup 加载图片。

String imageUrl = "...";

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

byte[] imageData = response.bodyAsBytes();

另见

【讨论】:

    猜你喜欢
    • 2015-06-06
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 2011-05-21
    • 2019-03-08
    • 1970-01-01
    相关资源
    最近更新 更多