OkHttp игнорировать перехватчик регистрации - PullRequest
0 голосов
/ 25 июня 2018

Я столкнулся со странной проблемой.OkHttp выдает мне журнал следующим образом:

I / System.out: [OkHttp] sendRequest >>

I / System.out: [OkHttp] sendRequest << </p>

Но я объявил перехватчик журналирования при инициализации клиента.

HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BODY : HttpLoggingInterceptor.Level.NONE);

OkHttpClient.Builder client = new OkHttpClient.Builder()
        .connectTimeout(30, TimeUnit.SECONDS)
        .readTimeout(30, TimeUnit.SECONDS)
        .addInterceptor(chain -> {
            Request original = chain.request();
            Request.Builder builder = original.newBuilder()
                    .header("Authorization", Credentials.basic(config.login(), config.password()));
            Request request = builder.build();
            return chain.proceed(request);
        })
        .addInterceptor(httpLoggingInterceptor);

return new Retrofit.Builder()
        .baseUrl(config.getServer())
        .callbackExecutor(Executors.newSingleThreadExecutor())
        .addConverterFactory(getMoshiConverterFactory())
        .client(client.build())
        .build();

И мой gradle содержит:

implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-moshi:2.3.0'
implementation 'com.squareup.moshi:moshi:1.5.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.7.0'
implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.7.0'

Я что-то не так делаю?

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

Вы можете использовать его как сетевой перехватчик вместо перехватчика приложения.Сделайте .addNetworkInterceptor(httpLoggingInterceptor); вместо .addInterceptor(httpLoggingInterceptor);

. Это позволит вам «наблюдать за данными, как они будут передаваться по сети».

Подробнее на вики-страницах.

0 голосов
/ 05 сентября 2018

Через некоторое время я вычисляю, какие журналы показывают это устройство Sony, и делаю копию okhttp-logging-interceptor, где я заменяю

Platform.get().log(INFO, message, null);

с

Log.i("Retrofit", message)

, поскольку на устройстве отображаются только System.out, Log.i, Log.w и Log.e журналы из приложения.

0 голосов
/ 25 июня 2018
HttpLoggingInterceptor logger = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
        @Override
        public void log(String message) {
            Log.d("OkHttp", message);
        }
    });

Попробуйте так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...