我有一个拦截器,当我关闭互联网时,该拦截器工作正常,它会按预期方式抛出异常,但是当我再次打开互联网时,出现超时异常,就会出现问题。
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;
}
}