Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 改装添加Okhttp拦截器没有用_Android_Retrofit - Fatal编程技术网

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过滤器会阻止它们显示。这才是真正让我困惑的地方,它只是不起作用。我尝试使用调试断点进行调试,但显然没有进入拦截器。我试图在拦截器中执行某些操作,但发现它没有任何用处。所以我尝试像我发布的一样,似乎是一样的,我只是想知道怎么了?我试图在截取器中做些什么,但发现没用。所以我试着像我发布的一样,看起来是一样的,所以我只是想知道怎么了?