web-dev-qa-db-fra.com

Remplacement pour obsolète DefaultHttpClient

J'utilise DefaultHttpClient dans mon application actuelle. 

J'ai lu cet article qui dit que la DefaultHttpClient est obsolète: http://developer.Android.com/reference/org/Apache/http/impl/client/DefaultHttpClient.html

Il pointe vers ce site: http://Android-developers.blogspot.com/2011/09/androids-http-clients.html?m=1 qui est trop vieux et écrit en 2011. 

Je vais abandonner avec DefaultHttpClient et suivre cet article qui utilise HttpClient: http://loopj.com/Android-async-http/

Je me demande si c'est la bonne voie à suivre lors de la programmation en 2015 visant l'API Android 19 et supérieure.

11
Ehsan

Ok, j'ai attendu une semaine et j'ai fait toutes sortes de recherches. Je pense avoir trouvé la réponse. 

Je conseille vivement aux débutants et même aux programmeurs professionnels Android de connaître l’existence de la très utile bibliothèque appelée Retrofit:

Un document complet est présent sur http://square.github.io/retrofit/

Le dépassement de capacité de la pile contient également des exemples de presque toutes les tâches à effectuer sur un réseau pour contacter un service REST distant.

Il est préférable de cesser d'utiliser HttpURLConnection et AsyncTask. La mise à niveau est beaucoup plus rapide et prend en charge toutes les situations de panne prêtes à l'emploi.

9
Ehsan

En plus de vous connecter à ce blog, le répertoire -docs vous recommande d'utiliser URL.openConnection qui existe depuis le niveau 1 de l'API.

 Alternative

5
weston

Vous devriez passer à HttpURLConnection . Cela nécessite un peu plus de code, mais pas tellement . Dans le SDK 22, HttpClient était déjà déconseillé, et même si vous ciblez le SDK 19, lors de la compilation avec 22, vous obtenez des avertissements.

Juste des spéculations (je ne peux trouver aucune source pour cela maintenant), mais j'imagine qu'ils ne procéderont à aucune correction dans les bibliothèques obsolètes, de sorte que tous les problèmes de sécurité ou les bogues resteront non résolus.

3
Sebastian

Option 1: Volley

Android 1.6 (API niveau 4) ou supérieur

Les avantages de Volley:

  • Planification automatique des requêtes réseau.
  • Plusieurs connexions réseau simultanées.
  • Mise en cache transparente des réponses sur disque et en mémoire avec cohérence de cache HTTP standard.
  • Prise en charge de la priorisation des demandes.
  • API de demande d'annulation. Vous pouvez annuler une demande unique ou définir des blocs ou des étendues de demandes à annuler.
  • Facilité de personnalisation, par exemple, pour réessayer et annuler.
  • Un ordre solide qui facilite le remplissage correct de votre interface utilisateur avec des données extraites de manière asynchrone depuis le réseau.
  • Outils de débogage et de traçage.

Option 2: OkHttp

OkHttp supporte Android 2.3 et supérieur. Pour Java, la configuration minimale requise est 1.7.

Certaines des fonctionnalités énumérées dans sa documentation: 

  • La prise en charge HTTP/2 et SPDY permet à toutes les demandes adressées au même hôte de partager un socket.
  • Le regroupement de connexions réduit la latence des demandes (si SPDY n’est pas disponible).
  • GZIP transparent réduit la taille des téléchargements.
  • La mise en cache des réponses évite complètement le réseau pour les demandes répétées.
2
Faiz Siddiqui

Il est temps de passer à OkHttp, qui gère HTTP efficacement, accélère le chargement de votre matériel et réduit la bande passante. Il prend en charge les appels bloquants synchrones et les appels asynchrones avec rappel.

OkHttp supporte Android 2.3 et supérieur.

Ajoutez la dépendance ci-dessous à votre projet Android.

compile 'com.squareup.okhttp:okhttp:2.4.0'
0
Kanagalingam