HttpURLConnectionパッケージ非同期ネットワークリクエスト

7022 ワード

    /**

     * 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");