我是一名android編程的業餘愛好者。我使用Jsoup從網站獲取html並將其放入textview,但出現錯誤。我怎樣才能解決這個問題?停止工作使用Jsoup從網址獲取數據時出錯
我的代碼:
package com.example.hashtag.asdasd;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
Document siteDoc;
String a;
Elements p;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn= (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new siteGetter().execute();
}
});
}
private class siteGetter extends AsyncTask < Void, Void, String>{
@Override
protected String doInBackground(Void... voids) {
try {
siteDoc = Jsoup.connect("http://hashtagedu.ir").get();
} catch (IOException ex) {
ex.printStackTrace();
}
return null;
}
}
public void displaydata(){
p = siteDoc.getElementsByTag("p");
a=p.text();
TextView tv= (TextView) findViewById(R.id.textView);
tv.setText(a);
}
}
我的錯誤:
了java.lang.RuntimeException:而在android.os.AsyncTask $ 3執行doInBackground() 發生錯誤。完成(AsyncTask.java:309) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) at java.util.concurrent.FutureTask.setException(FutureTask.java:223) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:588) 在java.lang中的234) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) :的.java .Thread.run(Thread.java:818) 引起:java.lang.SecurityException:權限被拒絕(缺少 INTERNET權限?) 在java.net.InetAddress.lookupHostByName(InetAddress.java:464) 在java.net.InetAddress.getAllByNameImpl(InetAddress.java:252) 在java.net.InetAddress.getAllByName(InetAddress.java:215) 在 com.android.okhttp.internal.Network $ 1.resolveInetAddresses(Network.java:29) 在 com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188) 在 com.android.okhttp .internal.http.RouteSelector.nextProxy(RouteSelector.java:157) at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100) 在 com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357) 在 com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340) 在 融爲一體。 android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330) 在 com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248) 在 com.android.okhttp。 internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:437) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114) 在 org.jsoup.helper.HttpConnection $ Response.execute(HttpConnection.java:563) 在 org.jsoup.helper.HttpConnection $ Response.execute(HttpConnection.java:540) 在org.jsoup.helper。 HttpConnection.execute(HttpConnection.java:227) at org.jsoup.helper.HttpConnection.get(HttpConnection.java:216) at com.example.hashtag.asdasd.MainActivity $ siteGetter。doInBackground(MainActivity.java:46) 在 com.example.hashtag.asdasd.MainActivity $ siteGetter.doInBackground(MainActivity.java:39) 在android.os.AsyncTask $ 2.call(AsyncTask.java:295) 在java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor。 java:1113) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) 引起:android.system.GaiException:android_getaddrinfo失敗: EAI_NODATA(沒有與主機名關聯的地址) at libcore.io.Posix.android_getaddrinfo(Native Method) at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55 ) 在java.net.InetAddress.lookupHostByName(InetAddress.java:451) 在java.net.InetAddress.getAllByNameImpl(InetAddress.java:252) 在java.net.InetAddress.getAllByName(InetAddress.java:215) 在 com.android.okhttp.internal.Network $ 1.resolveInetAddresses(Network.java:29) at 個com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188) 在 com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157) 在 com.android .okhttp.internal.http.RouteSelector.next(RouteSelector.java:100) 在 com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357) 在 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) 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:437) 在 com.android .okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114) 在 org.jsoup.helper.HttpConnection $ Response.execute(HttpConnection.java:563) 在 org.jsoup.helper.HttpConnection $迴應.execute(HttpConnection.java:540) at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227) at org.jsoup.helper.Htt pConnection.get(HttpConnection.java:216) 在 com.example.hashtag.asdasd.MainActivity $ siteGetter.doInBackground(MainActivity.java:46) 在 com.example.hashtag.asdasd.MainActivity $ siteGetter.doInBackground( MainActivity.java:39) at android.os.AsyncTask $ 2.call(AsyncTask.java:295) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util 。同時。的ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:588) 在java.lang.Thread.run(Thread.java:818) 產生的原因:android.system.ErrnoException:android_getaddrinfo失敗: EACCES(拒絕) 在libcore .io.Posix.android_getaddrinfo(Native Method) at java.net.InetAddress.java:451 at java.net.InetAddress上libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55) 。 getAllByNameImpl(InetAddress.java:252) at java.net.InetAddress.getAllByName(InetAddress.java:215) at com.android.okhttp.internal.Network $ 1.resolveInetAddresses(Network.java:29) 在 com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188) 在 com.android。 okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157) 在 com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100) 在 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) 在 com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248) 在 com.android .okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:437) 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114) 在 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.example.hashtag.asdasd.MainActivity $ siteGetter。 doInBackground(MainActivity.java:46) 在 com.example.hashtag.asdasd.MainActivity $ siteGetter.doInBackground(MainActivity.java:39) 在android.os.AsyncTask $ 2.call(AsyncTask.java:295) 在java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:234) at java.util.concu rrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:588) 在java.lang.Thread.run(Thread.java:818)
您的應用程序沒有按沒有'android.permission.INTERNET'權限。您需要將此權限添加到應用程序的清單中,或者在應用程序的運行時期間詢問它。 – Titus
可能重複[SecurityException:權限被拒絕(缺少INTERNET權限?)](http://stackoverflow.com/questions/17360924/securityexception-permission-denied-missing-internet-permission) – Ziem