Android HttpClient: NetworkOnMainThreadException

Tengo un código a continuación:

protected void testConnection(String url) { DefaultHttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(url); ResponseHandler responsehandler = new BasicResponseHandler(); try { String connection = httpclient.execute(httpget, responsehandler); Toast.makeText(getBaseContext(), R.string.connection_succeed, Toast.LENGTH_SHORT).show(); view_result.setText(connection); } catch(IOException e) { Toast.makeText(getBaseContext(), R.string.connection_failed, Toast.LENGTH_SHORT).show(); } httpclient.getConnectionManager().shutdown(); } 

y agrega un permiso en Menifest:

  

Pero va una excepción: NetworkOnMainThreadException, ¿cómo puedo hacer?

En ICS y más tarde ya no puede hacer operaciones de red en la cadena de interfaz de usuario. En su lugar, se ve obligado a crear un nuevo hilo y hacer sus cosas de redes allí.

Las posibles herramientas son AsyncTask de Android y el Thread Java normal.

Un buen tutorial se puede encontrar aquí: Android Threads, Handlers y AsyncTask – Tutorial

A partir de API 11, no puede manipular las operaciones de red (que consumen mucho tiempo) en el hilo principal . Use AsyncTask o Thread para realizar tales operaciones.

No puede realizar operaciones de red en el hilo del evento, ya que Android Api Level 11. En su lugar, debe hacer la operación de la red en otro hilo que no sea el del evento, y use Handler o Asynctask para hacerlo.

Si ejecuta su código en android 2.xy su versión inferior, creo que este código funcionará perfectamente. Pero si ejecuta esto en 3.x y su versión superior, entonces obtiene una excepción. El problema es que debe llamar al servicio web desde su hilo de trabajo (AsyncTask <>). No puede llamar al servicio web desde el hilo principal.