Recuperar una cadena devuelta desde AsyncTask en Android

Quiero recuperar los contenidos deEste archivo y guárdalo en una cadena.

He intentado usar AsyncTask (basado enesta respuesta) y aquí está mi clase.

class RetreiveURLTask extends AsyncTask<Void, Void, String> {

    private Exception exception = null;
    public String ResultString = null;

    protected String doInBackground(Void ... something) {
        URL url;
        try {
            url = new URL("http://stream.lobant.net/ccfm.info");
            HttpURLConnection urlConnection;
            urlConnection = (HttpURLConnection) url.openConnection();
            InputStream in = new BufferedInputStream(urlConnection.getInputStream());
            String stream_url = IOUtils.toString(in, "UTF-8");
            urlConnection.disconnect();

            return stream_url;

        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        } catch (Exception e) {
            this.exception = e;
            return null;
        }
    }

    protected void onPostExecute(String stream_url) {
    // TODO: check this.exception 
    // TODO: do something with the feed
    if (this.exception != null)
        this.exception.printStackTrace();

    this.ResultString = stream_url;
    }
}   

He intentado usar mi clase AsyncTask de esta manera:

  AsyncTask<Void, Void, String> stream_task = new RetreiveURLTask().execute();
  String stream_url = stream_task.ResultString;

pero ResultString no se reconoce.

Estoy confundido acerca de cómo funciona todo esto. Dado que AsyncTask se ejecuta en segundo plano, incluso si pudiera asignar mi cadena a una de las variables públicas, no hay garantía de que sea válida cuando realice la asignación. Incluso si tuviera que usar algún tipo de función getResult (), necesitaría saber cuándo llamarla para que el código haya terminado de ejecutarse.

Entonces, ¿cómo se hace esto generalmente?

(Además, ¿mi código de lectura http es correcto?)

Mi habilidad: puedo codificar, pero soy nuevo en Android.

Respuestas a la pregunta(4)

Su respuesta a la pregunta