журнал okhttp не печатается

#android #okhttp

#Android #okhttp

Вопрос:

Я создаю клиент api, используя модернизацию с помощью этого метода:

 private fun createNewApiClient(authRefreshClient: AuthRefreshClient,
                                   preferencesInteractor: PreferencesInteractor): ApiClient {
        val loggingInterceptor = HttpLoggingInterceptor(PrettyLogger())
        loggingInterceptor.level = if (BuildConfig.DEBUG) HttpLoggingInterceptor.Level.BODY else HttpLoggingInterceptor.Level.NONE


        val okHttpClient = createHttpClientBuilder()
                .addInterceptor(loggingInterceptor)
                .build()

        return Retrofit.Builder()
                .client(okHttpClient)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
           
                .baseUrl(Interactors.apiEndpoint)
                .build()
                .create(ApiClient::class.java)
    }
  

Для отладки установлено значение true в моем сгенерированном файле BuildConfig:

 public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");

}
  

Я могу подтвердить, что вызов, который я делаю с этим клиентом, выполняется, потому что я поместил оператор lot в выбрасываемую часть подписки RX:

 Interactors.api.apiClient.getUserByEmail(email).
                .subscribe({
                    Log.d("Email exists")
                   //Success
                }, {

        
             Log.e("Call is failing")
                     
                    }
                })
  

Но тело запроса не отображается в моих инструкциях журнала. Ничего из okhttp не отображается. Что не так с моей реализацией okhttp?

Комментарии:

1. Вы уверены, что у BuildConfig вас есть true значение? Вы вошли в этот класс после компиляции?

2. Этот класс создается в процессе компиляции. Я также удалил оператор if и установил уровень ведения журнала на полный во всех случаях, и он все равно не работал.

3. Может быть, с этим проблема PrettyLogger() ? Попробуйте использовать HttpLoggingInterceptor.Logger из библиотеки.

4. В этом и заключалась хитрость. Спасибо!

Ответ №1:

Попробуйте заменить ваш PrettyLogger() на logger из HttpLoggingInterceptor

Так что замените свой:

 val loggingInterceptor = HttpLoggingInterceptor(PrettyLogger())
  

в:

 val loggingInterceptor = HttpLoggingInterceptor()