尝试Jsoup.connect(''any url'')时出现jsoup java.net.UnknownHostException

时间:2017-09-10 11:56:00

标签: java android jsoup ioexception

我试图运行这段代码

            String test;
            Document doc= null;
            try {
                doc = Jsoup.connect("http:\\thatsthefinger.com\\").get();
                test=doc.title();
            } catch (IOException e) {
                e.printStackTrace();
                out.setText(e.getMessage());
            }

这是即将到来的行为。

W/System.err: java.net.UnknownHostException: http:\thatsthefinger.com\
W/System.err:     at com.android.okhttp.internal.http.HttpEngine.createAddress(HttpEngine.java:1143)
W/System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:323)
W/System.err:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:249)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:437)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114)
W/System.err:     at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:652)
W/System.err:     at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:629)
W/System.err:     at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:261)
W/System.err:     at org.jsoup.helper.HttpConnection.get(HttpConnection.java:250)
W/System.err:     at gplabs.szalpha.MainActivity$1.onClick(MainActivity.java:62)
W/System.err:     at android.view.View.performClick(View.java:5207)
W/System.err:     at android.view.View$PerformClick.run(View.java:21177)
W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err:     at android.os.Looper.loop(Looper.java:148)
W/System.err:     at     android.app.ActivityThread.main(ActivityThread.java:5441)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

我到处搜索,尽我所能,但无法解决。 任何人至少在我的Android工作室版本上给我一段工作代码,因为我怀疑我的avm。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

像这样写

连接( “http://www.thatsthefinger.com”)

答案 1 :(得分:0)

Vedvrat说。请参阅此行,您的网址错误。

java.net.UnknownHostException: http:\thatsthefinger.com\

您必须传递有效的网址。网址必须为:http://www.thatsthefinger.com

这不会给你一个新问题NetworkOnMainThreadException

实际上,您不能在MainThread中调用网络操作。如果允许,主线程必须等到结果出现。结果,您的应用程序将保持挂起状态,直到结果出现。它会产生糟糕的用户体验。

使用AsyncTask来调用网络操作。

private class DownloadFilesTask extends AsyncTask<String, String, Document> {
     protected Document doInBackground(String... urls) {
        Document doc= null;
        try {
            doc = Jsoup.connect("http:\\thatsthefinger.com\\").get();
        } catch (IOException e) {
            e.printStackTrace();
            out.setText(e.getMessage());
        }
        return doc;
     }

     protected void onPostExecute(Document doc) {
         if(doc != null){
            String test= doc.title();
         }
     }
 }

有关AsyncTask的更多信息,请参阅此处:https://developer.android.com/reference/android/os/AsyncTask.html