Apache http client o URLConnection

Necesito descargar una página web en una aplicación de Android y estoy teniendo dificultades para decidir si utilizar el cliente HTTP apache de Android o URLConnection de java.

¿Alguna idea?

Para la mayoría de las cosas, diría que HttpClient es el camino a seguir. Sin embargo, hay algunas situaciones y casos URLConnection que recurriría a una URLConnection . Ejemplos de casos de borde aquí y aquí

EDITAR
Una pregunta similar se ha hecho antes: httpclient vs httpurlconnection . HttpUrlConnection que HttpUrlConnection es algo más rápido ya que el HttpClient se construye sobre las bibliotecas estándar de Java. Sin embargo , encontraría el código de HttpClient mucho más rápido y fácil de escribir y mantener. Según un comentario a continuación, los elementos centrales de HttpClient han sido optimizados para el rendimiento.

Si el rendimiento es una gran preocupación, lo mejor es escribir dos clientes, uno usando cada método, luego compararlos con ambos. Si haces esto, por favor, háganos saber los resultados.

Google ha desaprobado silenciosamente el uso del cliente Apache HTTP desde Gingerbread: http://android-developers.blogspot.com/2011/09/androids-http-clients.html . Y aunque no lo marcaron con una anotación desaprobada, sugieren que use HttpURLConnection para nuevas aplicaciones, ya que: it is where we [Google] will be spending our energy going forward gastaremos it is where we [Google] will be spending our energy going forward .

Personalmente, no me gusta esa decisión y prefiero seguir HttpClient 4.1+, ya que es más rápido, tiene menos errores y se actualiza regularmente. Y aunque no puede actualizar la biblioteca del sistema a la versión 4.1, puede incluir el paquete HttpClient en su proyecto Android (como beneficio adicional, esto le permitiría no depender de las correcciones de fallos de Google ni de las actualizaciones de los proveedores). Sin embargo, hay una trampa: para evitar posibles colisiones con la biblioteca incorporada, debe cambiar el nombre de los paquetes httpclient utilizando la herramienta JarJar. Resultó que alguien ya hizo esto (el paquete reempaquetado y los proyectos de la biblioteca de Android están disponibles para descargar):

http://code.google.com/p/httpclientandroidlib/

Este es un reempaquetado de HttpClient 4.1 para Android. La versión de HttpClient en Android SDK es 4.0beta2. Ha habido varias actualizaciones de HttpClient y algunas correcciones de errores muy necesarias, como el almacenamiento en caché de autenticación desde 4.0beta.

Como Google ha dejado de usar HttpClient a favor del estándar de Java HttpURLConnection, creé un script para convertir una versión de HttpClient de Apache en una biblioteca de Android.

Cambios en stock HttpClient

  • Se cambió el nombre de todos los paquetes org.apache.http por ch.boye.httpclientandroidlib
  • Se eliminaron todas las clases dependientes de org.ietf. * (Autenticación SPNEGO)
  • Se reemplazó org.apache.commons.codec.binary.Base64 con android.util.Base64.
  • Creó una nueva clase HttpClientAndroidLog para reemplazar org.apache.commons.logging

en Gingerbread y más tarde, HttpURLConnection es el camino a seguir. considere que Apache HttpClient está en desuso. (También tenga en cuenta que Android no utiliza HttpClient 4.1, mencionado en otro comentario).

si tiene un caso donde Apache HttpClient es más rápido, infórmelo como un error aquí: http://code.google.com/p/android/issues/list