Warum Retrofit verwenden, wenn wir OkHttp haben

105

Mit OkHttp können wir eine HTTP-Anfrage stellen und dann eine Antwort vom Server erhalten

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

dann mit Gson lib Antwort auf Objekt konvertieren, das wir brauchen.

Dies ist von Square / OkHttp doc:

Die Anforderungs- / Antwort-API wurde mit fließenden Buildern und Unveränderlichkeit entwickelt. Es unterstützt sowohl synchron blockierende Anrufe als auch asynchrone Anrufe mit Rückrufen

Ich habe aus stackOverFlow gelesen

Retrofit verwendet OkHTTP automatisch, falls verfügbar

.

Meine Frage ist also, wofür genau Nachrüstung ist?

Was kann Retrofit, was OkHttp nicht kann?!

Ich denke, OkHttp und Gson lösen das Problem mit der Anforderungs-API. Welches Problem löst Retrofit für uns?

Mehrdad Faraji
quelle
2
Meinungsbasiert und als solche wahrscheinlich geschlossen. Tatsache ist, dass beide existieren und keiner gestorben ist. Dies bedeutet, dass beide in den Augen der Android-Entwickler-Community gültige Anwendungsfälle haben.
27.
1
Überprüfen Sie heraus diesen Beitrag stackoverflow.com/q/16902716/1144203
ivan.sim
@isim Ich habe diesen Link schon einmal gesehen, kann aber nicht verstehen, warum Nachrüstung erforderlich ist?! und warum Retrofit OkHttp verwenden!
Mehrdad Faraji
@MehrdadFaraji Sie benötigen keine Nachrüstung, wenn OkHttp das tun kann, was Sie wollen. Warum Nachrüstung OkHttp verwenden Ein paar Dinge wie OkHttp- CallMuster, OkHttp-Interceptor, Anheften von Zertifikaten usw. zu
aktivieren
Die Verwendung der Nachrüstung mit rxjava ist zu einer gängigen Branchenpraxis geworden. Dies ist ein weiterer Grund für die Verwendung der Nachrüstung
paul_hundal

Antworten:

93

Mit OkHttp können wir eine HTTP-Anfrage stellen und dann eine Antwort vom Server erhalten. Mit Gson lib konvertieren wir die Antwort in ein Objekt, das wir benötigen

Beachten Sie, dass Sie in Ihrem Code-Snippet zwei wichtige Schritte übersprungen haben: Generieren der URL und tatsächliches Parsen des JSON mit Gson.

Meine Frage ist also, wofür genau Nachrüstung ist?

Es dient zum Generieren der URL (unter Verwendung typabhängigen generierten Codes, der an Ihre spezifische REST-API gebunden ist) und zum tatsächlichen Parsen des JSON mithilfe von Gson. Mit anderen Worten, es macht das, was Sie in Ihrem Code-Snippet übersprungen haben.

Außerdem hilft es bei bestimmten Arten von REST-Operationen (z. B. POST) ein wenig beim Zusammenstellen der zu übermittelnden Daten (z. B. beim Generieren des codierten Formulars).

Per Definition müssen Sie Retrofit nicht verwenden. Nachrüstung ist Computercode, der von Computerprogrammierern geschrieben wurde. Jemand anderes könnte Code schreiben, um das zu tun, was Retrofit tut.

warum Retrofit verwenden OkHttp

Nachrüsten muss HTTP-Operationen ausführen. Sofern verfügbar, wird OkHttp verwendet, für alles, was OkHttp bietet: HTTP / 2- und SPDY-Unterstützung, steckbare Interceptors usw.

CommonsWare
quelle
32

Sie sollten die Nachrüstung verwenden, wenn Sie versuchen, Ihre Server-API in Ihrer Anwendung zuzuordnen (Typensicherung). Retrofit ist nur ein API-Adapter, der über okHTTP verpackt ist.

Wenn Sie sicher eingeben und den Interaktionscode mit Ihrer API modularisieren möchten, verwenden Sie die Nachrüstung. Abgesehen davon sind die zugrunde liegende Leistung, die Anforderungsstandards usw. von okHTTP und Retrofit gleich.

Außerdem würde ich empfehlen, diesen Podcast von Jesse Wilson (Entwickler der wichtigsten Android-HTTP-Clients) anzuhören, in dem er ausführlich über die Entwicklungsgeschichte von Apache HTTP-Client, HTTPURLConnection, okHTTP und Retrofit spricht.

Geekoraul
quelle
22

Retrofit vs. OkHttp Der Grund ist einfach : OkHttp ist ein reiner HTTP / SPDY-Client, der für den Netzwerkbetrieb auf niedriger Ebene, das Caching, die Manipulation von Anforderungen und Antworten und vieles mehr verantwortlich ist. Im Gegensatz dazu ist Retrofit eine REST-Abstraktion auf hoher Ebene, die auf OkHttp aufbaut. Retrofit 2 ist stark mit OkHttp gekoppelt und nutzt es intensiv.

OkHttp-Funktionen: Verbindungspooling, Gzipping, Caching, Wiederherstellung nach Netzwerkproblemen, Synchronisierung und asynchrone Aufrufe, Weiterleitungen, Wiederholungsversuche usw.

Nachrüstfunktionen: URL-Manipulation, Anfordern, Laden, Zwischenspeichern, Threading, Synchronisieren ... Ermöglicht Synchronisierungs- und Asynchronisierungsaufrufe.

Wubbalubbadubdub
quelle
7

Retrofit ist ein REST-Client für Android und Java von Square. Es macht es relativ einfach, JSON (oder andere strukturierte Daten) über einen REST-basierten Webservice abzurufen und hochzuladen. In Retrofit konfigurieren Sie, welcher Konverter für die Datenserialisierung verwendet wird. Normalerweise verwenden Sie für JSON GSon, Sie können jedoch benutzerdefinierte Konverter hinzufügen, um XML oder andere Protokolle zu verarbeiten. Retrofit verwendet die OkHttp-Bibliothek für HTTP-Anforderungen. Sie sollten die Nachrüstung über okhttp verwenden, um die Funktionen und Funktionen zu vereinfachen.

Malti Devnani
quelle