Android Bridge Timeout Requestbuilder Defualt Timeout

Android Bridge Timeout: RequestBuilder Varsayılan Zaman Aşımı

Android uygulamalarında, sunucuyla iletişim kurmak için genellikle Retrofit gibi HTTP istemci kitaplıkları kullanılır. Retrofit’in RequestBuilder sınıfı, HTTP isteklerini yapılandırmak için kullanılır ve varsayılan olarak 10 saniyelik bir zaman aşımı süresi vardır.

Zaman Aşımı Süresinin Önemi

Zaman aşımı süresi, sunucunun isteğe yanıt vermesi için beklenen maksimum süreyi belirler. Zaman aşımı süresi çok kısa olursa, sunucu geç yanıt verdiğinde istekler başarısız olabilir. Öte yandan, zaman aşımı süresi çok uzun olursa, yavaş sunucular uygulamanın performansını etkileyebilir.

Varsayılan Zaman Aşımını Değiştirme

RequestBuilder sınıfının timeout() yöntemi, zaman aşımı süresini değiştirmek için kullanılır. Zaman aşımı süresi milisaniye cinsinden belirtilir. Örneğin, zaman aşımı süresini 30 saniyeye ayarlamak için şu kodu kullanabilirsiniz:

“`kotlin
val request = Retrofit.Builder()
.baseUrl(“https://example.com”)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(MyApi::class.java)

val call = request.getPosts()
call.timeout().timeout = 30000
“`

Zaman Aşımı Süresini Dinamik Olarak Ayarlama

Bazı durumlarda, zaman aşımı süresini istek türüne veya sunucuya bağlı olarak dinamik olarak ayarlamak isteyebilirsiniz. Bunu yapmak için Interceptor arayüzünü uygulayabilirsiniz. Interceptor‘lar, istekler gönderilmeden önce ve yanıtlar alındıktan sonra çalıştırılan kod parçalarıdır.

Örneğin, sunucuya bağlı olarak zaman aşımı süresini ayarlamak için şu Interceptor‘ı uygulayabilirsiniz:

kotlin
class ServerTimeoutInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request()
val url = request.url()
val timeout = when (url.host()) {
"example.com" -> 30000
"example2.com" -> 60000
else -> 10000
}
val newRequest = request.newBuilder()
.timeout(timeout, TimeUnit.MILLISECONDS)
.build()
return chain.proceed(newRequest)
}
}

Bu Interceptor‘ı Retrofit istemcinize şu şekilde ekleyebilirsiniz:

kotlin
val retrofit = Retrofit.Builder()
.baseUrl("https://example.com")
.addConverterFactory(GsonConverterFactory.create())
.addInterceptor(ServerTimeoutInterceptor())
.build()

Faydalı Kaynaklar


Yayımlandı