web-dev-qa-db-fra.com

pourquoi utiliser Retrofit quand nous avons OkHttp

avec OkHttp nous pouvons faire une requête HTTP puis obtenir une réponse du serveur

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
  .url(url)
  .build();
Response response = client.newCall(request).execute();

puis avec Gson lib convertir la réponse en objet dont nous avons besoin.

ceci provient du doc ​​Square/OkHttp:

Son API de requête/réponse est conçue avec des générateurs et une immuabilité fluides. Il prend en charge les appels de blocage synchrones et les appels asynchrones avec rappel

Je lis de stackOverFlow

Retrofit utilise OkHTTP automatiquement si disponible

.

Ma question est donc de savoir à quoi sert exactement Retrofit?

qu'est-ce que la modernisation peut faire qu'OkHttp ne peut pas?!

Je pense que OkHttp et Gson résolvent un problème d’API de requête, alors quel problème de retrofit résout pour nous?

82
Mehrdad Faraji

avec OkHttp nous pouvons faire une requête HTTP puis obtenir une réponse du serveur ... puis avec Gson lib convertir la réponse en objet dont nous avons besoin

Notez que dans votre extrait de code, vous avez ignoré deux étapes notables: la génération de l'URL et l'analyse du code JSON à l'aide de Gson.

Ma question est donc de savoir à quoi sert exactement Retrofit?

Il permet de générer l'URL (à l'aide du code généré sensible au type lié à votre API REST spécifique) et d'analyser le code JSON à l'aide de Gson. En d'autres termes, il fait ce que vous avez ignoré dans votre extrait de code.

De même, pour certains types d'opérations REST (par exemple, POST), cela aide un peu à assembler ce qu'il faut soumettre (par exemple, générer le formulaire codé).

Par définition, vous n’avez pas besoin d’utiliser Retrofit. Retrofit est un code informatique écrit par des programmeurs. Quelqu'un d'autre pourrait écrire du code pour faire ce que Retrofit fait.

pourquoi utiliser Retrofit OkHttp

La modernisation doit effectuer des opérations HTTP. Il utilise OkHttp, le cas échéant, pour tout ce que OkHttp fournit: prise en charge de HTTP/2 et SPDY, intercepteurs enfichables, etc.

74
CommonsWare

Vous devez utiliser la modification si vous essayez de mapper l'API de votre serveur dans votre application (sécurisation du type). Retrofit est simplement un adaptateur API intégré à okHTTP.

Si vous voulez taper safe et modulariser le code d'interaction avec votre API, utilisez retrofit. En dehors de cela, les performances sous-jacentes, les demandes par défaut, etc. de okHTTP et Retrofit sont identiques.

Je vous recommande également d'écouter le podcast this de Jesse Wilson (développeur des principaux clients Android HTTP), où il décrit en détail l'historique du développement du client HTTP Apache, HTTPURLConnection. , okHTTP et Retrofit.

28
geekoraul

Retrofit vs. OkHttpLa raison en est simple: OkHttp est un client HTTP/SPDY pur responsable de toute opération réseau de bas niveau, de la mise en cache, de la manipulation des demandes et des réponses, etc. . En revanche, Retrofit est un REST abstraction de haut niveau construit au-dessus d’OkHttp. Retrofit 2 est fortement associé à OkHttp et en fait un usage intensif.

Fonctions OkHttp: Regroupement de connexions, gzipping, mise en cache, résout des problèmes de réseau, appels synchro et asynchrones, redirections, tentatives, etc.

Fonctions de modification: Manipulation d'URL, demande, chargement, mise en cache, thread, synchronisation ... Permet les appels synchronisés et asynchrones.

13
Wubbalubbadubdub

La modernisation est un client REST pour Android et Java par Square. Il est relativement facile de récupérer et de télécharger du JSON (ou d’autres données structurées) via un Webservice basé sur REST. Dans Retrofit, vous configurez le convertisseur utilisé pour la sérialisation des données. Généralement, pour JSON, vous utilisez GSon, mais vous pouvez ajouter des convertisseurs personnalisés pour traiter XML ou d'autres protocoles. Retrofit utilise la bibliothèque OkHttp pour les requêtes HTTP. Vous devez utiliser retrofit over okhttp pour sa facilité, pour ses fonctionnalités.

5
Malti Devnani

Le problème résolu par Retrofit est le suivant: Les codes de OKHttp permettant d’obtenir un objet d’un serveur distant sont complexes.

0
Lyn