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?
Call
Muster, OkHttp-Interceptor, Anheften von Zertifikaten usw. zuAntworten:
Beachten Sie, dass Sie in Ihrem Code-Snippet zwei wichtige Schritte übersprungen haben: Generieren der URL und tatsächliches Parsen des JSON mit Gson.
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.
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.
quelle
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.
quelle
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.
quelle
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.
quelle