Problemas de Android con AsyncTask y InputStream

He estado tratando de resolver esto por mi cuenta durante un tiempo ... por prueba / error, así como por investigación, pero parece que no puedo entenderlo. Soy bastante malo con Async, las conexiones de red y el estuco, por lo que podría ser algo simple que estoy pasando por alto. De todos modos ... pegaré algunos ejemplos de código relevantes y explicaciones.

Fondo rápido de mi problema. Estoy trabajando con la API de Rotten Tomatoes para mi aplicación y estoy usando GSON para el análisis de sus datos. Inicialmente estaba apuntando a 2.3, y esto funcionó bien. Entonces decidí tener soporte para ICS y, por supuesto, me topé con "no operación de red en el subproceso de la interfaz de usuario", así que empecé a profundizar en AsyncTask.

Aquí está mi método de InputStream:

private InputStream retrieveStream(String url) {

    DefaultHttpClient client = new DefaultHttpClient();

    HttpGet getRequest = new HttpGet(url);

    try {

        HttpResponse getResponse = client.execute(getRequest);
        final int statusCode = getResponse.getStatusLine().getStatusCode();

        if (statusCode != HttpStatus.SC_OK) {
            Log.w(getClass().getSimpleName(),
                    "Error " + statusCode + " for URL " + url);
            return null;
        }

        HttpEntity getResponseEntity = getResponse.getEntity();
        return getResponseEntity.getContent();
    }
    catch (IOException e) {
        getRequest.abort();
        Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
    }

    return null;
}

Lo que funcionó bien en mi actividad principal, y ahora me está dando problemas al intentar "convertirlo" en AsyncTask. Lo he estado llamando así:

InputStream source = retrieveStream( url parameter );

Luego intenté mover ese método a mi clase de AsyncTask y llamarlo así:

private PerformMovieSearch performSearch = new PerformMovieSearch(this);
InputStream source = performSearch.retrieveStream(movieQueryUrl);

Pero eso no lo corta, aún recibe el error de realizar acciones de red en la interfaz de usuario. Lo que necesito averiguar es cómo llamar a 'retrieveStream' desde AsyncTask, supongo. Actualmente esa clase se ve así:

package net.neonlotus.ucritic;

[imports]

public class PerformMovieSearch extends AsyncTask<String, Void, String> {

private final Context context;
private ProgressDialog progressDialog;


public PerformMovieSearch(Context context){
    this.context = context;
}


@Override
protected String doInBackground(String... urls) {
    retrieveStream(urls[0]);

    return null;

}

@Override
protected void onPreExecute() {
    progressDialog= ProgressDialog.show(context, "Please Wait","Searching movies", true);

}


@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    progressDialog.dismiss();

    MyActivity.mListAdapter.notifyDataSetChanged();
}

public InputStream retrieveStream(String url) {

    DefaultHttpClient client = new DefaultHttpClient();
    HttpGet getRequest = new HttpGet(url);

    try {
        HttpResponse getResponse = client.execute(getRequest);
        final int statusCode = getResponse.getStatusLine().getStatusCode();

        if (statusCode != HttpStatus.SC_OK) {
            Log.w(getClass().getSimpleName(),
                    "Error " + statusCode + " for URL " + url);
            return null;
        }

        HttpEntity getResponseEntity = getResponse.getEntity();
        return getResponseEntity.getContent();
    } catch (IOException e) {
        getRequest.abort();
        Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
    }

    return null;
}

}

Lo que se necesita cambiar es el "fondo de acción" ... pero parece que no puedo encontrar una manera directa de hacerlo funcionar correctamente. Estaba ejecutando usando

new PerformMovieSearch(this).execute(movieQueryUrl);

Sé que es un montón de cosas, potencialmente confusas ... pero si alguien sabe cómo hacer esencialmente el método retrieveStream de forma asíncrona, sería genial. Como dije, he intentado muchas cosas, hice mucha investigación, pero no pude encontrar nada útil.

Respuestas a la pregunta(2)

Su respuesta a la pregunta