If I create a request and that request returns a 4xx error Retrofit/Okhttp keeps retrying the request. I have set retryOnConnectionFailure to false and set a timeout of 15 seconds but that all seems to be ignored. did I miss something?
private static OkHttpClient getClient() {
return new OkHttpClient.Builder()
.addNetworkInterceptor(new HttpLoggingInterceptor().setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BODY : HttpLoggingInterceptor.Level.NONE))
.readTimeout(15, TimeUnit.SECONDS)
.connectTimeout(15, TimeUnit.SECONDS)
.retryOnConnectionFailure(false)
.addInterceptor(chain -> {
Request request = chain.request()
.newBuilder()
.build();
return chain.proceed(request);
}).build();
}
public static Retrofit getRetrofitClient(Gson gson){
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(baseUrl)
.client(OkHttpLogger.getClient());
if(gson != null){
builder.addConverterFactory(GsonConverterFactory.create(gson));
}else{
builder.addConverterFactory(GsonConverterFactory.create());
}
return builder.build();
}
I am using retrofit 2.3.0 and okhttp version 3.8.1
Edit
One thing I do see is that if I set a timeout of 5 seconds it works perfectly keeps retrying for 5 seconds then gives me a failure but if I bump it up to 10 seconds it just keeps going and finally stops around 2 minutes.