0

我试图获取网站内容,但我的应用程序在调用 DownloadTask 时不断崩溃

这是我的 DownloadTask 和 onCreate 代码

并且调试也转到Log.i,我猜结果字符串没有得到内容?还是下载任务代码全错了?

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

    @Override
    protected String doInBackground(String... urls) {
        URL url;
        HttpURLConnection urlConnection = null;
        String result = "";
        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();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }
}

“创建”

    DownloadTask task = new DownloadTask();
    String result = null;
    try {
        result = task.execute("https://samples.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid=API_KEY/").get();
    } catch (ExecutionException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    Log.i("Contents", result);
4

1 回答 1

0

我想到了

我没有添加返回结果;到代码中,添加它解决了我的问题。

        protected String doInBackground(String... urls) {
        URL url;
        HttpURLConnection urlConnection = null;
        String result = "";
        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 null;
    }
于 2019-02-16T20:44:03.303 回答