CORDEA blog

Android applications engineer

Kotlin + OkHttp3 + Retrofit2 でヘッダの追加とか

Kotlin でアプリ書いてる時にちょっと戸惑った


 

OkHttpClient のヘッダーの追加は

val httpClient =
                    OkHttpClient.Builder()
                            .addInterceptor {
                                it.proceed(it.request()
                                        .newBuilder()
                                        .addHeader("Content-Type", "application/json")
                                        .build())
                            }
                            .build()


これを Retrofit で使用する場合

Retrofit.Builder()
                .baseUrl { HttpUrl.parse(url) }
                .client(httpClient)
                .build()
                .create(HogeHogeApiInterface::class.java, context)
                .postHuge()
                ...


Observable 返したい場合や、gson 使いたい場合
ここらへんは java と変わり無いですが

Retrofit.Builder()
                .baseUrl { HttpUrl.parse(url) }
                .client(httpClient)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                ...

ちなみに HttpLoggingInterceptor 使う場合

val httpClient =
                    OkHttpClient.Builder()
                            .addInterceptor {
                                ...
                            }
                            .addInterceptor(okhttp3.logging.HttpLoggingInterceptor()
                            .setLevel(okhttp3.logging.HttpLoggingInterceptor.Level.BASIC))
                            .build()


実際に使ってるのはここらへんです。

もうちょっと知見が集まってくれると Kotlin 使う人は増えそうな気がする