tkt989 🍵 ブログ

日々のメモ

Retrofitを使ってみる(Qiita APIs)

2018/01/15

準備

以下のリンクからQiitaのアクセストークンを取得しておく。

アプリケーション - Qiita

コード

build.gradleにretrofit本体と、Stringに変換するconverterを追加。


    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:converter-scalars:2.3.0'

APIにアクセスするインターフェイスを作成。

user/:user_idを使って、ユーザー情報を取得するようにパスを設定。

Qiita API v2ドキュメント - Qiita:Developer

interface QiitaService {
    @GET("users/{userId}")
    fun user(@Path("userId") userId: String): Call<String>
}

アクセストークンをAuthorizationに書かないといけないので、OkHttpClientを生成して、 ヘッダーを追加。

val okHttpClient = OkHttpClient.Builder()
        .addInterceptor { chain ->
            val original = chain.request()

            val request = original.newBuilder()
                    .addHeader("Authorization", "Bearer {ACCESS_TOKNE}")
                    .build()

            return@addInterceptor chain.proceed(request)
       }.build()

val retrofit = Retrofit.Builder()
        .addConverterFactory(ScalarsConverterFactory.create())
        .client(okHttpClient)
        .build()

QiitaServiceを取得して、APIにリクエストを送る。

val qiitaService = retrofit.create(QiitaService::class.java)

qiitaService.user("tkt989").enqueue(object: Callback<String> {
    override fun onResponse(call: Call<String>?, response: Response<String>?) {
        if (response?.isSuccessful ?: false) {
            Log.d(javaClass.name, response?.body())
        }
    }

    override fun onFailure(call: Call<String>?, t: Throwable?) {
    }
})