Java 我想下载web内容,但它不是';t工作不正常

Java 我想下载web内容,但它不是';t工作不正常,java,android,download,Java,Android,Download,我想下载一个网站并在日志中以字符串的形式显示内容,但首先应用程序需要几个小时才能加载,如果加载,我就得不到网站的源代码 public class MainActivity extends AppCompatActivity { public class DownloadTask extends AsyncTask<String, Void, String> { @Override protected String doInBackgro

我想下载一个网站并在日志中以字符串的形式显示内容,但首先应用程序需要几个小时才能加载,如果加载,我就得不到网站的源代码

public class MainActivity extends AppCompatActivity {


    public class DownloadTask extends AsyncTask<String, Void, String> {


        @Override
        protected String doInBackground(String... urls) {

            String result = "";
            URL url;
            HttpURLConnection urlConnection = null;

            try {

                url = new URL(urls[0]);

                urlConnection = (HttpURLConnection)url.openConnection();

                InputStream in = urlConnection.getInputStream();

                InputStreamReader reader = new InputStreamReader(in);

                int data = reader.read();

                while (data!= -1) {

                    char current = (char) data;

                    result += current;

                    data = reader.read();

                }

                return result;

            }
            catch (Exception e){

                e.printStackTrace();

                return "Failed";

            }


        }
    }



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        DownloadTask task = new DownloadTask();
        String result = null;

        try {

            result = task.execute("http://www.kicker.de/").get();


        } catch (InterruptedException e) {

            e.printStackTrace();

        } catch (ExecutionException e) {

            e.printStackTrace();

        }

        Log.i("Contents of URL", result);


    }


}
public类MainActivity扩展了AppCompatActivity{
公共类DownloadTask扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…URL){
字符串结果=”;
网址;
HttpURLConnection-urlConnection=null;
试一试{
url=新url(url[0]);
urlConnection=(HttpURLConnection)url.openConnection();
InputStream in=urlConnection.getInputStream();
InputStreamReader reader=新的InputStreamReader(in);
int data=reader.read();
while(数据!=-1){
当前字符=(字符)数据;
结果+=电流;
data=reader.read();
}
返回结果;
}
捕获(例外e){
e、 printStackTrace();
返回“失败”;
}
}
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DownloadTask任务=新建DownloadTask();
字符串结果=null;
试一试{
结果=任务。执行(“http://www.kicker.de/).get();
}捕捉(中断异常e){
e、 printStackTrace();
}捕获(执行例外){
e、 printStackTrace();
}
Log.i(“URL内容”,结果);
}
}

您应该使用BufferedReader从InputStreamReader读取实际数据

public class DownloadTask extends AsyncTask<String, Void, String> {


@Override
protected String doInBackground(String... urls) {

    StringBuilder html = new StringBuilder();
    URL url;
    HttpURLConnection urlConnection = null;

    try {

        url = new URL(urls[0]);

        urlConnection = (HttpURLConnection)url.openConnection();

        InputStream in = urlConnection.getInputStream();

        BufferedReader reader = new BufferedReader(new InputStreamReader(in));

        for (String line; (line = reader.readLine()) != null; ) {
              html.append(line);
        }

        return html.toString();

    }
    catch (Exception e){

        e.printStackTrace();

        return "Failed";

    }
    finally{
        in.close();

    }

}
公共类下载任务扩展了异步任务{
@凌驾
受保护的字符串doInBackground(字符串…URL){
StringBuilder html=新的StringBuilder();
网址;
HttpURLConnection-urlConnection=null;
试一试{
url=新url(url[0]);
urlConnection=(HttpURLConnection)url.openConnection();
InputStream in=urlConnection.getInputStream();
BufferedReader reader=新的BufferedReader(新的InputStreamReader(in));
for(字符串行;(line=reader.readLine())!=null;){
html.append(行);
}
返回html.toString();
}
捕获(例外e){
e、 printStackTrace();
返回“失败”;
}
最后{
in.close();
}
}

}

切勿使用
execute().get()
。它违背了异步任务的目的,您没有看到文档吗?