【Android】OkHttpのInterceptorで全ての通信リクエストに一括でパラメーターを追加する
実装メモ。
例えばリクエストパラメーターにアプリのバージョンを追加する場合。
class AddRequestParamsInterceptor : Interceptor { override fun intercept(chain: Interceptor.Chain): Response { val request = chain.request() val newRequest = when (val method = request.method()) { "GET" -> { val originalUrl = request.url() val newUrl = originalUrl.newBuilder() .addQueryParameter("version", BuildConfig.VERSION_NAME) .build() request.newBuilder().url(newUrl).build() } else -> { val requestBuilder = request.newBuilder() val buffer = Buffer() FormBody.Builder() .add("version", BuildConfig.VERSION_NAME) .build() .writeTo(buffer) request.body()?.let { buffer.write("&".toByteArray()) it.writeTo(buffer) } val requestBody = RequestBody.create( MediaType.parse("application/x-www-form-urlencoded;charset=UTF-8"), buffer.readUtf8() ) requestBuilder.method(method, requestBody).build() } } return chain.proceed(newRequest) } }