Kotlinに次のクラスがあり、HttpUrlのQueryParamを設定しています。
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()
一方、Interceptorのログレベルを設定するための次のコードがあります。
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)
ですか?
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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加