Java 使用dagger2超时异常改装拦截器

Java 使用dagger2超时异常改装拦截器,java,android,retrofit,retrofit2,dagger-2,Java,Android,Retrofit,Retrofit2,Dagger 2,我有一个拦截器,当我关闭互联网时它可以正常工作,它会像预期的那样抛出异常,但是当我再次打开互联网时,问题发生了,我得到了超时异常 AppModule.java @Singleton @Provides Retrofit provideRetrofitInstance(RetrofitInterceptor retrofitInterceptor) { return new Retrofit.Builder() .baseUrl(Bu

我有一个拦截器,当我关闭互联网时它可以正常工作,它会像预期的那样抛出异常,但是当我再次打开互联网时,问题发生了,我得到了超时异常

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);
    }
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;
    }
}
interceptor.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);
    }
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;
    }
}

如果只是为了连接互联网,为什么不使用广播接收器来检查状态?这对我来说似乎是一种过度的杀伤力。如果只是为了连接互联网,为什么不使用广播接收器来检查状态?对我来说,这看起来太过分了。