addInterceptor (logger) для OkHttpClient - PullRequest
       13

addInterceptor (logger) для OkHttpClient

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

У меня есть следующий класс в Kotlin, чтобы установить QueryParam для HttpUrl:

import okhttp3.Interceptor
import okhttp3.Response
import java.io.IOException

class RequestInterceptor : Interceptor {

    @Throws(IOException::class)
    override fun intercept(chain: Interceptor.Chain): Response {
        val original = chain.request()
        val originalHttpUrl = original.url()

        val url = originalHttpUrl.newBuilder()
                .addQueryParameter("api_key", "")
                .build()

        val request = original.newBuilder().url(url).build()
        return chain.proceed(request)
    }
}

И его нужно инициализировать следующим образом:

val logger = RequestInterceptor()

С другой стороны, у меня есть следующий код для установки уровня регистрации для перехватчика:

val logger = HttpLoggingInterceptor(HttpLoggingInterceptor.Logger {
                Log.d("API", it)
            })
logger.level = HttpLoggingInterceptor.Level.BASIC

В конце я хочу установить Interceptor в качестве клиента для OkHttpClient:

val client = OkHttpClient.Builder()
                    .addInterceptor(logger)
                    .build()

Проблема заключается в следующем: как одновременно определить и класс, и уровень журнала addInterceptor(logger)?

1 Ответ

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

Вы можете добавить несколько interceptors, используя код ниже

   val client = OkHttpClient.Builder().build()
   client.interceptors().add(RequestInterceptor()) //<--- 1
   val logger = HttpLoggingInterceptor(HttpLoggingInterceptor.Logger {
                Log.d("API", it)
            })
   logger.level = HttpLoggingInterceptor.Level.BASIC
   client.interceptors().add(logger) //< --- 2
...