我现在有10多个不同的api,我想为每个api添加一些常见的请求参数,理想的方法是每个api都有拦截器,这在改造中是不可能的。 有没有办法做到这一点?
答案 0 :(得分:1)
你仍然可以通过改造来做到这一点 - 创建一个带有API调用的静态创建的类,并根据传递的参数调用所需的扩展。
public interface RetrofitAPICalls{
}
public class RetrofitAPIService{
private RetroFitAPIService(){}
public static RetrofitAPICalls createApiService(PARAMETERS NEEDED FOR YOUR INTERCEPTOR){
Retrofit.Builder builder = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl(baseUrl);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(getInterceptor()).addInterceptor(loggingInterceptor)
.build();
builder.client(client);
}
}
public void getInterceptor()
{
return new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Request newReq = request.newBuilder()
//SWITCH BASED ON REQUEST?
return chain.proceed(newReq);
}
}