我试图运行这段代码
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。 提前谢谢。
答案 0 :(得分:1)
像这样写
答案 1 :(得分:0)
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