【问题标题】:Android Studio - HttpUrlConnection & BufferedReader doesn't read everything?Android Studio - HttpUrlConnection 和 BufferedReader 没有读取所有内容?
【发布时间】:2017-10-20 21:35:42
【问题描述】:

因此,当在较小的页面上运行此代码时,它运行良好。但是当我在更大的页面(例如 Stackoverflow 或其他任何页面)上运行它时,它不会在字符串结果中获得完整的源代码。有什么我没有考虑或做错事吗?谢谢!

示例:对于 StackOverflow,它在源代码的第 35 行停止,只有几个字符,而不是 3000 多行代码。

日志的最后一行:

StackExchange.using("gp

我的代码:

protected void runItNow(View v){
    Log.i("INSIDE: ", "runItNow");

    DownloadTask downloadTask = new DownloadTask();
    String result;
    try {
        result = downloadTask.execute("http://www.stackoverflow.com/").get();


    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }


}

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

    @Override
    protected String doInBackground(String... params) {
        URL url;
        HttpURLConnection urlConnection;

        try{

            url = new URL(params[0]);
            urlConnection = (HttpURLConnection) url.openConnection();

            InputStream in = urlConnection.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            urlConnection.setConnectTimeout(250000);

            int data;
            char[] buffer = new char[4096];
            StringBuilder builder = new StringBuilder();

            while ((data = reader.read(buffer)) != -1){
                builder.append(buffer, 0, data);
            }

            String results = builder.toString();
            Log.i("Results: ", results);


            in.close();
            reader.close();
            urlConnection.disconnect();
            return results;


        }catch(Exception e){
            e.printStackTrace();
        }

        return null;
    }
}

【问题讨论】:

  • ).get(); 不要使用 .get()。糟糕的编程!使用 AsyncTask 的 onPostExecute() 来处理结果。
  • 感谢您的提示。这就是我通常的做法,但这是 StackSkill 课程的方式。哈哈。

标签: android inputstream httpurlconnection bufferedreader


【解决方案1】:

您是否仅使用Log.i("Results: ", results); 检查输出? Logcat 可能正在削减其余的字符。尝试将其写入文件并检查其内容。

【讨论】:

  • 该死,我太傻了。我不知道为什么我没有想到这一点。谢谢!
猜你喜欢
  • 2013-03-23
  • 2011-09-10
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多