2012-02-26 14 views
5

Tengo un problema que quiero analizar un archivo XML en la web. Ahora el mío HttpResponce también le da demasiado tiempo para leer ese archivo XML, así que me aparece el error "Become Runtime Error" para mi GUI.HttpResponse en Android

try { 

     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost("http://chukk.nuzoka.com/name.xml"); 

     HttpResponse httpResponse = httpClient.execute(httpPost); 

     HttpEntity httpEntity = httpResponse.getEntity(); 
     line = EntityUtils.toString(httpEntity); 


    } catch (UnsupportedEncodingException e) { 
     line = "<results status=\"error\"><msg>Can't connect to server</msg></results>"; 
    } catch (MalformedURLException e) { 
     line = "<results status=\"error\"><msg>Can't connect to server</msg></results>"; 
    } catch (IOException e) { 
     line = "<results status=\"error\"><msg>Can't connect to server</msg></results>"; 
    } 

Cualquier ayuda se agradece :)

+0

haciendo esto en un hilo separado ¿verdad? – L7ColWinters

+0

Como nota al margen, considere usar StreamReader en lugar de EntityUtils.toString, para mejorar el uso de la memoria. – yorkw

+0

@yorkw ¿Tienes algo que respalde eso? Estoy usando EntityUtils .. – nhaarman

Respuesta

3

Como regla general en la programación de la interfaz de usuario, no sólo Android, debe mover a un fondo hilo cualquier tarea pesada de procesamiento/consume mucho tiempo.

Hay buenas instalaciones para eso que le ayudan a realizar la tarea larga en segundo plano y publicar sus resultados finales/intermedios en el hilo de la interfaz de usuario en Android, como AsyncTask y Handlers.

1

Además de lo Binyamin Sharet Dicho esto, hay un special mode puede utilizar durante el desarrollo que pueden detectar errores de diseño como este.

StrictMode se usa más comúnmente para detectar acceso accidental a disco o red en el hilo principal de la aplicación, donde se reciben operaciones de IU y se realizan animaciones. Mantener las operaciones de disco y red fuera del hilo principal hace que las aplicaciones sean mucho más fluidas y receptivas. Al mantener la respuesta del hilo principal de su aplicación, también evita que los diálogos ANR se muestren a los usuarios.

1

Desea utilizar una solicitud HTTP GET en lugar de una POST ya que no está publicando ningún parámetro en el servidor web.

DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpGet request = new HttpGet(); 
request.setURI(new URI("http://chukk.nuzoka.com/name.xml")); 
HttpEntity httpEntity = httpResponse.getEntity(); 
line = EntityUtils.toString(httpEntity); 
Cuestiones relacionadas