1

I have an interceptor which works fine when i turn off internet it throw's the exception as expected but the problem occur when i turn on internet back again i get timeout exception.

AppModule.java

@Singleton
    @Provides
    Retrofit provideRetrofitInstance(RetrofitInterceptor retrofitInterceptor) {
        return new Retrofit.Builder()
                .baseUrl(BuildConfig.URL)
                .client(new OkHttpClient()
                        .newBuilder()
                        .readTimeout(30, TimeUnit.SECONDS)
                        .connectTimeout(30, TimeUnit.SECONDS)
                        .writeTimeout(30, TimeUnit.SECONDS)
                        .addInterceptor(retrofitInterceptor)
                        .build())
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
    }

    @Provides
    @Singleton
    RetrofitInterceptor provideApiInterceptor(Context context) {
        return new RetrofitInterceptor(context);
    }

RetrofitInterceptor.java

public class RetrofitInterceptor implements Interceptor {

    public static final String TAG = RetrofitInterceptor.class.getSimpleName();

    private String sessionId;

    private Context context;

    @Inject
    public RetrofitInterceptor(Context context) {
        this.context = context;
    }

    @Override
    public Response intercept(Chain chain) throws IOException {
        if (NetworkUtils.isNetworkConnected(context)) {
            Request request = chain.request();
            Request.Builder requestBuilder = request.newBuilder();
            if (sessionId != null) {
                requestBuilder.header("sessionId", sessionId);
            }
            Response response = chain.proceed(requestBuilder.build());
            return response;
        } else {
            throw new NoConnectivityException();
        }
    }  

    public void setSessionId(String sessionId) {
        this.sessionId = sessionId;
    }
}
Sarvesh Chavan
  • 73
  • 1
  • 3
  • 7
  • if its just for internet connectivity why u dont use broadcast receiver for checking state ? This looks like an overkill to me. – Kebab Krabby May 11 '20 at 12:26

0 Answers0