2012-03-04 36 views
16

Estoy buscando crear un formulario de inicio de sesión para una aplicación de Android. Quiero usar un método de publicación para enviar información al lado del servidor donde está manejado por un archivo PHP; que a su vez valida los parámetros y devuelve una respuesta.URLConnection o HTTPClient: ¿Qué ofrece una mejor funcionalidad y más eficiencia?

He visto implementaciones usando HttpClient y URLConnection, son muy similares. ¿Cuál es más eficiente para la utilización dentro de una aplicación de Android?

Gracias Fabios

+2

Echa un vistazo al blog oficial de Android [aquí] (http://android-developers.blogspot.co.nz/2011/09/androids-http-clients.html), que vale la pena leer. – yorkw

+0

Posible duplicado de http://stackoverflow.com/q/4799151/741249 – THelper

Respuesta

18

Creo en este caso le toca a cualquier API que encuentre más natural. En general, HTTPClient es más eficiente dentro de una aplicación del lado del servidor (o quizás aplicación por lotes), porque le permite especificar un grupo de conexiones multiproceso, con un número máximo de conexiones totales, y un máximo por conteo de conexiones de host (que asegura conexiones concurrentes a el mismo host no se serializa (un problema con HttpUrlConnection)). Pero en una aplicación para Android, probablemente solo estés haciendo una sola conexión a la vez, así que esto no importa.

0

Si no está tratando de enviar y recibir archivos grandes, le sugiero HttpClient.
Es mucho más fácil comenzar y usar, y hay muchos más ejemplos de trabajo disponibles en Internet.

NOTA: Esto es HttpClient diferente de HTTPClient (caso de nota) que es la implementación de otro proveedor.

18

He hecho un poco de investigación sobre esto, He estado usando Apache HttpClient durante mucho tiempo en Android. Me pareció una elección natural y pensé que mejoraría con el tiempo.

Por otro lado, cuando estaba desarrollando para heredado BlackBerryOS, he estado usando HttpUrlConnection.

Era evidente para mí que el rendimiento de BB era mejor que Android en el contexto de la creación de redes.

HttpClient es una clase completamente funcional pero con errores que proporciona un gran conjunto de API/métodos. Se puede usar para crear un WebBrowser completamente funcional para Android. Pero tiene algunos problemas con la versión anterior de Android y Google no contribuye activamente a ella.

Considerando que HttpUrlConnection tiene una API bastante útil que solo es útil para desarrollar una aplicación cliente de red. Ha mejorado el almacenamiento en caché de respuestas y la técnica de compresión mejorada en Android 2.3 y superior. Se reinicia cuando está creando una aplicación cliente de red.

"Apache HTTPClient tiene un menor número de errores en Eclair y Froyo. Es la mejor opción para estas versiones.

Para pan de jengibre y mejor, HttpURLConnection es la mejor opción. Su API simple y marcas de pequeño tamaño es ideal para Android. La compresión transparente y el almacenamiento en caché de respuesta reducen el uso de la red, mejoran la velocidad y ahorran batería. Las nuevas aplicaciones deben usar HttpURLConnection, es donde Google gastará su energía en el futuro."

, consultar para más detalles

http://android-developers.blogspot.in/2011/09/androids-http-clients.html

+7

Sorprendentemente similar a esta entrada del blog: http://android-developers.blogspot.com/2011/09/androids-http-clients.html –

+0

Quizás deberías citar la referencia. – amertkara

+0

¿Podría decirnos qué tipo de diferencias de rendimiento ha experimentado? Cualquier compresión específica, aparte de caché. – Hrishikesh

0

Aunque la etiqueta es específicamente para Android, en general HttpURLConnection es también la mejor opción cuando se trata de aplicaciones Java EE ya que utilizará la pila HTTP que viene con el servidor de aplicaciones que incluye la configuración de certificados HTTPS en la aplicación nivel de servidor en lugar del código.

sino que también permiten obtener la última versión del SSLs proporcionados por la pila de servidor de aplicaciones en lugar de ser atrapado con una versión antigua de httpclient que pueden no funcionar con TLS 1.2

0

general, yo recomendaría URLConnection porque puede actualizarse con el JDK. En un caso, tuvimos una llamada que usaba una versión anterior de HTTP Client que no era compatible con TLS v1.2.

Sin embargo, no usaría URLConnection directamente, generalmente usaría una API de nivel superior como JAX-RS Client o los clientes de wsimport para conectarme a otro sitio.

Cuestiones relacionadas