web-dev-qa-db-fra.com

URLConnection ou HTTPClient: Qu'est-ce qui offre une meilleure fonctionnalité et plus d'efficacité?

Je cherche à créer un formulaire de connexion pour une application Android. Je souhaite utiliser une méthode de publication pour envoyer des informations au serveur où elles sont gérées par un fichier PHP; qui à son tour valide les paramètres et renvoie une réponse.

J'ai parcouru les implémentations utilisant HttpClient et URLConnection, elles sont très similaires. Quel est le moyen le plus efficace pour une utilisation dans une application Android?

Merci Fabii

16
Fabii

Je crois que dans ce cas, c'est l'API que vous trouvez plus naturelle. Généralement, HTTPClient est plus efficace dans une application côté serveur (ou peut-être une application par lots), car il vous permet de spécifier un pool de connexions multithread, avec un nombre maximal de connexions totales et un nombre maximal de connexions par hôte le même hôte ne se sérialise pas (problème avec HttpUrlConnection)). Mais dans une application Android, vous ne ferez probablement qu'une seule connexion à la fois, donc cela n'a pas d'importance.

19
Kevin

J'ai fait quelques recherches à ce sujet, J'utilise Apache HttpClient depuis longtemps sous Android. Cela me semblait un choix naturel et je pensais que cela s'améliorerait avec le temps.

De l'autre côté, alors que je développais pour BlackBerryOS, j'utilisais HttpUrlConnection.

Il était clairement évident pour moi que la performance de BB était meilleure que celle d'Android dans le contexte de la mise en réseau.

HttpClient est une classe entièrement fonctionnelle mais boguée qui fournit un vaste ensemble d’API/méthodes. Il peut être utilisé pour créer un WebBrowser entièrement fonctionnel pour Android. Mais il a quelques problèmes avec l'ancienne version d'Android et Google n'y contribue pas activement.

Considérant que HttpUrlConnection a une API très utile qui est simplement utile pour développer une application cliente de réseau. Il a amélioré la mise en cache des réponses et la technique de compression améliorée sur Android 2.3 et supérieur. Il est recommencé lorsque vous créez une application cliente de réseau.

"Apache HTTPClient a moins de bogues sur Eclair et Froyo. C'est le meilleur choix pour ces versions.

Pour Gingerbread et mieux, HttpURLConnection est le meilleur choix. Son API simple et sa petite taille le rendent idéal pour Android. La compression transparente et la mise en cache des réponses réduisent l'utilisation du réseau, améliorent la vitesse et économisent la batterie. Les nouvelles applications doivent utiliser HttpURLConnection; c'est là que Google dépensera son énergie pour aller de l'avant. "

Référez-vous pour plus de détails

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

19
JaydeepW

Selon l'équipe Android, vous devriez utiliser HttpURLConnection sur Gingerbread et mieux, car c'est là qu'ils vont déployer de nouveaux efforts de développement.

http://Android-developers.blogspot.de/2011/09/androids-http-clients.html

Edit: Ces derniers jours, j'ai trouvé okhttp by Square, qui inclut le support SPDY et les tentatives automatiques: https://github.com/square/okhttp

9
Nacho Coloma

Je recommanderais généralement URLConnection car il peut être mis à jour avec le JDK. Dans un cas, nous avons eu un appel utilisant une version plus ancienne de HTTP Client qui ne supportait pas TLS v1.2.

Cependant, je n'utiliserais pas directement URLConnection, mais j'utiliserais généralement une API de niveau supérieur, telle que le client JAX-RS ou les clients wsimport, pour se connecter à un autre site.

1

Bien que la balise soit spécifiquement destinée à Android, HttpURLConnection est également le meilleur choix pour les applications Java EE car elle utilisera la pile HTTP fournie avec le serveur d’applications, qui inclut la configuration de certificats HTTPS au niveau du serveur code.

Cela vous permettra également d’obtenir la dernière version des SSL fournie par la pile du serveur d’application plutôt que d’être bloquée avec une ancienne version de httpclient qui risque de ne pas fonctionner avec TLS 1.2. 

0
Archimedes Trajano

Si vous n'essayez pas d'envoyer et de recevoir des fichiers volumineux, je vous conseillerais HttpClient.
Il est beaucoup plus facile de commencer et d’utiliser, et il existe beaucoup plus d’exemples de travail disponibles sur Internet.

REMARQUE: HttpClient est différent de HTTPClient (cas de la note), qui est l'implémentation d'un autre fournisseur.

0