Retrofit添加Okhttp拦截器没用
Retrofit add Okhttp interceptor no use
我在添加拦截器时发现了一些奇怪的东西:
public ApiDefinition getService() {
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(chain -> {
System.out.println("into interceptor");
Request request = chain.request();
return chain.proceed(request);
})
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(UrlConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(client)
.build();
return retrofit.create(ApiDefinition.class);
}
然后当我调用网络时,没有任何打印,就像拦截器不起作用一样。
Observable observable = apiDefinition.getResponse();
observable.subscribe(....)
我很困惑,有什么不对吗?
apiDefinition.getResponse();
你忘了 subscribe
api 打电话。只是变得可观察,而不是观察它。
apiDefinition
.getResponse()
.subscribe(.......);
如果你想拦截网络请求调用并在logcat中打印它们
你可以通过添加这样的 HttpLoggingInterceptor
来做到这一点:
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
// set your desired log level
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(logging)
.build();
抱歉各位,我在使用 dagger2 注入 ApiDefinition 时犯了一些错误,所以已经解决了。
我在添加拦截器时发现了一些奇怪的东西:
public ApiDefinition getService() {
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(chain -> {
System.out.println("into interceptor");
Request request = chain.request();
return chain.proceed(request);
})
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(UrlConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(client)
.build();
return retrofit.create(ApiDefinition.class);
}
然后当我调用网络时,没有任何打印,就像拦截器不起作用一样。
Observable observable = apiDefinition.getResponse();
observable.subscribe(....)
我很困惑,有什么不对吗?
apiDefinition.getResponse();
你忘了 subscribe
api 打电话。只是变得可观察,而不是观察它。
apiDefinition
.getResponse()
.subscribe(.......);
如果你想拦截网络请求调用并在logcat中打印它们
你可以通过添加这样的 HttpLoggingInterceptor
来做到这一点:
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
// set your desired log level
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(logging)
.build();
抱歉各位,我在使用 dagger2 注入 ApiDefinition 时犯了一些错误,所以已经解决了。