Temel HTTP istemcisinde zaman aşımı ayarlayabilirsiniz. İstemci belirtmezseniz, Retrofit varsayılan bağlantı ve okuma zaman aşımlarına sahip bir istemci oluşturur. Kendi zaman aşımlarınızı ayarlamak için kendi istemcinizi yapılandırmanız ve adresine sağlamanız gerekir RestAdapter.Builder
.
Bir seçenek OkHttp istemcisini Square'den de kullanmaktır .
1. Kütüphane bağımlılığını ekleyin
Build.gradle dosyasına şu satırı ekleyin:
compile 'com.squareup.okhttp:okhttp:x.x.x'
x.x.x
İstenen kitaplık sürümü nerede .
2. İstemciyi ayarlayın
Örneğin, 60 saniyelik bir zaman aşımı ayarlamak istiyorsanız, sürüm 2'den önce Retrofit ve sürüm 3'ten önce Okhttp için bu işlemi yapın ( YENİ VERSİYONLAR İÇİN DÜZENLEMELERE BAKIN ):
public RestAdapter providesRestAdapter(Gson gson) {
final OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setReadTimeout(60, TimeUnit.SECONDS);
okHttpClient.setConnectTimeout(60, TimeUnit.SECONDS);
return new RestAdapter.Builder()
.setEndpoint(BuildConfig.BASE_URL)
.setConverter(new GsonConverter(gson))
.setClient(new OkClient(okHttpClient))
.build();
}
DÜZENLEME 1
O zamandan beri okhttp sürümleri 3.x.x
için bağımlılığı şu şekilde ayarlamanız gerekir:
compile 'com.squareup.okhttp3:okhttp:x.x.x'
Ve oluşturucu desenini kullanarak istemciyi ayarlayın:
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS)
.build();
Timeouts bölgesindeki diğer bilgiler
DÜZENLEME 2
Güçlendirme sürümleri, 2.x.x
aynı zamanda oluşturucu desenini de kullandığından, yukarıdaki dönüş bloğunu şu şekilde değiştirin:
return new Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
Benim providesRestAdapter
yöntemim gibi bir kod kullanıyorsanız , yöntem dönüş tipini Retrofit olarak değiştirin .
Retrofit 2 - Upgrade Guide 1.9'dan
daha fazla bilgi
ps: minSdkVersion'unuz 8'den büyükse şunları kullanabilirsiniz TimeUnit.MINUTES
:
okHttpClient.setReadTimeout(1, TimeUnit.MINUTES);
okHttpClient.setConnectTimeout(1, TimeUnit.MINUTES);
Birimler hakkında daha fazla bilgi için bkz. TimeUnit .