OkHttp varken neden Retrofit kullanıyoruz?


109

OkHttp ile HTTP isteğinde bulunabilir ve ardından sunucudan yanıt alabiliriz

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

sonra Gson lib ile yanıtı ihtiyacımız olan nesneye dönüştürün.

Bu Square / OkHttp belgesinden:

İstek / yanıt API'si, akıcı oluşturucular ve değişmezlik ile tasarlanmıştır. Geri aramalarla hem senkronize engelleme çağrılarını hem de asenkron çağrıları destekler

Ben okunan StackOverflow'daki

Retrofit, mevcutsa otomatik olarak OkHTTP'yi kullanır

.

Öyleyse sorum şu: Retrofit tam olarak ne için?

OkHttp bunu yapamaz ne Retrofit yapabilir ?!

Sanırım OkHttp ve Gson API istek sorununu çözüyor, peki Retrofit bizim için hangi sorunu çözüyor?


2
Fikir temelli ve bu nedenle kapanma olasılığı yüksek. İşin gerçeği, ikisi de var ve hiçbiri ölmedi. Bu, her ikisinin de Android geliştirici topluluğunun gözünde geçerli kullanım durumlarına sahip olduğu anlamına gelir.
2016

1
Bu
gönderiye

@isim Bu bağlantıyı daha önce görmüştüm, ancak neden Güçlendirmeye ihtiyacım olduğunu anlayamıyorum ?! ve Retrofit neden OkHttp!
Mehrdad Faraji

@MehrdadFaraji OkHttp istediğinizi yapabiliyorsa Retrofit'e ihtiyacınız yoktur. Retrofit neden OkHttp kullanıyor OkHttpCall modelini, OkHttp engelleyiciyi, sertifika sabitlemeyi vb . Etkinleştirmek gibi birkaç şey
ivan.sim

retrofitin rxjava ile kullanılması yaygın bir endüstri uygulaması haline geldi ve bu da retrofit kullanımının başka bir nedenidir
paul_hundal

Yanıtlar:


96

OkHttp ile HTTP isteğinde bulunabilir ve ardından sunucudan yanıt alabiliriz ... sonra Gson lib ile yanıtı ihtiyacımız olan nesneye dönüştürebiliriz

Kod pasajınızda iki önemli adımı atladığınızı unutmayın: URL'yi oluşturmak ve JSON'u Gson kullanarak gerçekten ayrıştırmak.

Öyleyse sorum şu: Retrofit tam olarak ne için?

URL'yi oluşturmak (belirli REST API'nize bağlı türe duyarlı oluşturulan kodu kullanarak) ve JSON'u Gson kullanarak gerçekten ayrıştırmak içindir. Başka bir deyişle, kod pasajınızda atladığınız şeyi yapar.

Ayrıca, belirli REST işlemleri türleri için (örneğin, POST), neyin gönderileceğini bir araya getirmede biraz yardımcı olur (ör., Kodlanmış formun oluşturulması).

Tanım gereği Retrofit'i kullanmanıza gerek yoktur. Güçlendirme, bilgisayar programcıları tarafından yazılan bilgisayar kodudur. Retrofit'in yaptığını yapmak için başka biri kod yazabilir.

Retrofit neden OkHttp kullanıyor

Retrofit işleminin HTTP işlemlerini gerçekleştirmesi gerekir. OkHttp'nin sağladığı her şey için mevcut olduğunda OkHttp kullanır: HTTP / 2 ve SPDY desteği, takılabilir önleyiciler, vb.


32

Sunucu API'nizi uygulamanızın içinde eşleştirmeye çalışıyorsanız (tür koruma), iyileştirmeyi kullanmalısınız. Retrofit, okHTTP üzerine sarılmış bir API bağdaştırıcısıdır.

Güvenli yazmak ve etkileşim kodunu API'nizle modüler hale getirmek istiyorsanız, iyileştirmeyi kullanın. Bunun dışında, okHTTP ve Retrofit'in temel performansı, istek varsayılanları vb. Aynıdır.

Ayrıca , Apache HTTP istemcisi, HTTPURLConnection, okHTTP ve Retrofit'in geliştirme geçmişinden derinlemesine bahsettiği Jesse Wilson'dan (başlıca android HTTP istemcilerinin geliştiricisi) bu podcast'i dinlemenizi tavsiye ederim .


24

İyileştirmeye karşı OkHttp Nedeni basit : OkHttp, herhangi bir düşük seviyeli ağ işlemi, önbelleğe alma, istek ve yanıt manipülasyonu ve daha pek çok şeyden sorumlu saf bir HTTP / SPDY istemcisidir. Tersine, Retrofit, OkHttp'nin üzerinde yüksek seviyeli bir DİNLENME soyutlamasıdır. Retrofit 2, OkHttp ile güçlü bir şekilde birleştirilir ve onu yoğun bir şekilde kullanır.

OkHttp İşlevleri: Bağlantı havuzu oluşturma, gzip gönderme , önbelleğe alma, ağ sorunlarından kurtarma, eşitleme ve eşzamansız çağrılar, yeniden yönlendirmeler, yeniden denemeler… vb.

Retrofit Fonksiyonları: URL manipülasyonu, talep etme, yükleme, önbelleğe alma, iş parçacığı oluşturma, senkronizasyon ... Senkron ve asenkron çağrılara izin verir.


7

Retrofit, Square tarafından Android ve Java için bir REST İstemcisidir. REST tabanlı bir Web hizmeti aracılığıyla JSON'u (veya diğer yapılandırılmış verileri) almayı ve yüklemeyi nispeten kolaylaştırır. Retrofit'de, veri serileştirme için hangi dönüştürücünün kullanılacağını yapılandırırsınız. Genellikle JSON için GSon kullanırsınız, ancak XML veya diğer protokolleri işlemek için özel dönüştürücüler ekleyebilirsiniz. Retrofit, HTTP istekleri için OkHttp kitaplığını kullanır. Kolaylığı ve özellikleri için okhttp üzerinden retrofit kullanmalısınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.