za pomocą OkHttp możemy wykonać żądanie HTTP, a następnie uzyskać odpowiedź z serwera
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
następnie za pomocą Gson lib przekonwertuj odpowiedź na potrzebny nam obiekt.
to jest z Square / OkHttp doc:
Jego API żądań / odpowiedzi zostało zaprojektowane z płynnymi konstruktorami i niezmiennością. Obsługuje zarówno synchroniczne wywołania blokujące, jak i wywołania asynchroniczne z wywołaniami zwrotnymi
Czytałem ze stackOverFlow
Retrofit automatycznie używa OkHTTP, jeśli jest dostępny
.
Więc moje pytanie brzmi: do czego dokładnie służy Retrofit?
co Retrofit może zrobić, czego OkHttp nie może ?!
Myślę, że OkHttp i Gson rozwiązują problem API żądania, więc jaki problem Retrofit rozwiązuje dla nas?
Call
wzorca OkHttp, przechwytywacza OkHttp, przypinanie certyfikatu itp.Odpowiedzi:
Zwróć uwagę, że we fragmencie kodu pominięto dwa istotne kroki: wygenerowanie adresu URL i faktyczne przeanalizowanie kodu JSON za pomocą Gson.
Służy do generowania adresu URL (przy użyciu wygenerowanego kodu uwzględniającego typ, powiązanego z określonym interfejsem API REST) i faktycznego analizowania kodu JSON przy użyciu Gson. Innymi słowy, robi to, co pominęło się we fragmencie kodu.
Ponadto w przypadku niektórych typów operacji REST (np. POST) pomaga nieco w asemblacji tego, co należy przesłać (np. Generowanie zakodowanego formularza).
Z definicji nie musisz korzystać z funkcji Retrofit. Retrofit to kod komputerowy napisany przez programistów komputerowych. Ktoś inny mógłby napisać kod, który robi to, co robi Retrofit.
Retrofit musi wykonywać operacje HTTP. Używa OkHttp, jeśli jest dostępny, dla wszystkiego, co zapewnia OkHttp: obsługa HTTP / 2 i SPDY, podłączane przechwytywacze itp.
źródło
Powinieneś użyć modernizacji, jeśli próbujesz zmapować interfejs API serwera w aplikacji (zabezpieczanie typów). Retrofit to po prostu adapter API opakowany w okHTTP.
Jeśli chcesz bezpiecznie i modularyzować kod interakcji za pomocą interfejsu API, użyj modernizacji. Poza tym podstawowa wydajność, domyślne ustawienia żądań itp. OkHTTP i Retrofit są takie same.
Poleciłbym również posłuchać tego podcastu Jesse Wilsona (twórcy głównych klientów HTTP dla Androida), w którym szczegółowo omawia historię rozwoju klienta HTTP Apache, HTTPURLConnection, okHTTP i Retrofit.
źródło
Retrofit vs. OkHttp Powód jest prosty : OkHttp to czysty klient HTTP / SPDY odpowiedzialny za wszelkie operacje sieciowe niskiego poziomu, buforowanie, manipulację żądaniami i odpowiedziami i wiele innych. W przeciwieństwie do tego Retrofit to wysokopoziomowa abstrakcja REST oparta na OkHttp. Retrofit 2 jest silnie powiązany z OkHttp i intensywnie z niego korzysta.
Funkcje OkHttp: pule połączeń, gzipowanie, buforowanie, odzyskiwanie po problemach z siecią, synchronizacja i wywołania asynchroniczne, przekierowania, ponowienia… i tak dalej.
Funkcje modernizacji: manipulacja adresem URL, żądanie, ładowanie, buforowanie, wątkowanie, synchronizacja ... Umożliwia synchronizację i wywołania asynchroniczne.
źródło
Retrofit to klient REST dla Androida i Java firmy Square. Ułatwia to stosunkowo łatwe pobieranie i przesyłanie JSON (lub innych danych strukturalnych) za pośrednictwem usługi sieci Web opartej na REST. W opcji Retrofit można skonfigurować konwerter używany do serializacji danych. Zwykle w przypadku formatu JSON używasz GSon, ale możesz dodać niestandardowe konwertery do przetwarzania XML lub innych protokołów. Retrofit używa biblioteki OkHttp do żądań HTTP. Powinieneś użyć modernizacji ponad okhttp ze względu na jego łatwość i funkcje.
źródło