/** * Implementation of AsyncTask, to fetch the data in the background away from * the UI thread. */ private class DownloadTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... urls) { try { return loadFromNetwork(urls[0]); } catch (IOException e) { return getString(R.string.connection_error); } } /** * Uses the logging framework to display the output of the fetch * operation in the log fragment. */ @Override protected void onPostExecute(String result) { Log.i(TAG, result); } } /** Initiates the fetch operation. */ private String loadFromNetwork(String urlString) throws IOException { InputStream stream = null; String str =""; try { stream = downloadUrl(urlString); str = readIt(stream, 500); } finally { if (stream != null) { stream.close(); } } return str; } /** * Given a string representation of a URL, sets up a connection and gets * an input stream. * @param urlString A string representation of a URL. * @return An InputStream retrieved from a successful HttpURLConnection. * @throws java.io.IOException */ private InputStream downloadUrl(String urlString) throws IOException { // BEGIN_INCLUDE(get_inputstream) URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(10000 /* milliseconds */); conn.setConnectTimeout(15000 /* milliseconds */); conn.setRequestMethod("GET"); conn.setDoInput(true); // Start the query conn.connect(); InputStream stream = conn.getInputStream(); return stream; // END_INCLUDE(get_inputstream) } /** Reads an InputStream and converts it to a String. * @param stream InputStream containing HTML from targeted site. * @param len Length of string that this method returns. * @return String concatenated according to len parameter. * @throws java.io.IOException * @throws java.io.UnsupportedEncodingException */ private String readIt(InputStream stream, int len) throws IOException, UnsupportedEncodingException { Reader reader = null; reader = new InputStreamReader(stream, "UTF-8"); char[] buffer = new char[len]; reader.read(buffer); return new String(buffer); }
调用方式
new DownloadTask().execute("http://www.google.com");
时间: 2024-10-05 12:30:57