Android 改装添加Okhttp拦截器没有用
我在添加拦截器时发现了一些奇怪的东西,如下所示:Android 改装添加Okhttp拦截器没有用,android,retrofit,Android,Retrofit,我在添加拦截器时发现了一些奇怪的东西,如下所示: public ApiDefinition getService() { OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(chain -> { System.out.println("into interceptor");
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()代码>您忘记了订阅api调用。只是被观察到,但没有观察到
apiDefinition
.getResponse()
.subscribe(.......);
apiDefinition.getResponse()代码>您忘记了订阅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();
如果您想拦截网络请求呼叫并在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时犯了一些错误,所以问题解决了。抱歉,伙计们,我在使用dagger2注入ApiDefinition时犯了一些错误,所以问题解决了。抱歉,我没有在这里发布所有代码。我确实订阅并获得了响应。但是没有打印消息作为“进入拦截器”预期。很抱歉,我没有在这里发布所有代码。我确实订阅并获得了响应。但不应将消息打印为“into interceptor”。除了Observable
中的键入错误之外,这里没有看到任何特别错误。System.out.println()
在其他地方使用时是否适用于您?我只是想排除是否有任何logcat过滤器会阻止它们显示。这才是真正让我困惑的地方,它只是不起作用。我尝试使用调试断点进行调试,显然没有输入到拦截器中。除了Observable
中的一个输入错误,这里没有看到任何特别错误。System.out.println()
在其他地方使用时是否适用于您?只是为了排除是否有任何logcat过滤器会阻止它们显示。这才是真正让我困惑的地方,它只是不起作用。我尝试使用调试断点进行调试,但显然没有进入拦截器。我试图在拦截器中执行某些操作,但发现它没有任何用处。所以我尝试像我发布的一样,似乎是一样的,我只是想知道怎么了?我试图在截取器中做些什么,但发现没用。所以我试着像我发布的一样,看起来是一样的,所以我只是想知道怎么了?