我是一名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