0

我正在阅读Android 开发教程。我在 Java 方面不是很有经验,但我发现这是一个很好的练习。无论如何,这是当前应该从我的 Android 设备上的网站获取数据的代码(几乎 downloadUrl 可以做所有事情 - 所以请帮助我):

private class DownloadXmlTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... urls) {
        try {
            return downloadUrl(urls[0]);
        } catch (IOException e) {
            return getResources().getString(R.string.connection_error);
        }
    }

    @Override
    protected void onPostExecute(String result) {
        try{
            doEt(result);
        } catch (Exception e){
            System.out.println(e);
        }
    }

    private String downloadUrl(String urlString) throws IOException {
        java.net.URL url = new URL(urlString);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(100000);
        conn.setConnectTimeout(150000);
        conn.setRequestMethod("GET");
        conn.setDoInput(true);
        // Starts the query
        conn.connect();
        BufferedReader r = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        StringBuilder total = new StringBuilder();
        String line;
        while ((line = r.readLine()) != null) {
            total.append(line);
        }
        //conn.disconnect();
        return total.toString();
    }
}

在 doEt() 中,我只是打印出我获得的字符串。不过,只有一半的网站在返回的 String 变量中。任何帮助表示赞赏,谢谢!

4

1 回答 1

0

可能出现的问题:

  1. 网站的第二部分是由 javascript 生成的,httpconnection 不会执行。
  2. 尝试先逐行打印

    while ((line = r.readLine()) != null) {
    
       total.append(line);
    
       Log.i("test",line);
    

    }

于 2013-09-19T19:18:38.060 回答