とっとこメモ

困った時のエンジニアメモ。Unity, Kotlin, Flutter などなど

【Kotlin】Retrofit デバッグログ出力

gradleファイルに記載を追記

dependencies {
   ・・・
   implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1'
}

Retrofitインスタンス生成時に記載を追記

package com.example.android.sample.twicass

import com.example.android.sample.twicass.conf.Constant
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory

class RetrofitInstance {
    companion object{
        fun getRetrofitInstance(): Retrofit{
            //以下追加
            val httpLogging = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
            val httpClientBuilder = OkHttpClient.Builder().addInterceptor(httpLogging)

            val retrofit = Retrofit.Builder().baseUrl(Constant.BASE_URL).addConverterFactory(
                GsonConverterFactory.create()
            ).client(httpClientBuilder.build()).build()
            return retrofit
        }
    }
}

エラー時の処理にLog出力処理を記載する

        call.enqueue(object :Callback<SearchLiveMovieResponse>{
            override fun onFailure(call: Call<SearchLiveMovieResponse>?, t: Throwable?) {
      //処理が失敗した時の内容を出力
                Log.d("fetchItems", "response fail")
                Log.d("fetchItems", "throwable :$t")
            }
            override fun onResponse(
                call: Call<SearchLiveMovieResponse>?,
                response: Response<SearchLiveMovieResponse>?
            ) {
                if(response!!.isSuccessful){
                    list.addAll(response!!.body().movieInfoList)
                    adapter.notifyDataSetChanged()
                }
                Log.d("fetchItems", "response code:" + response.code())
                Log.d("fetchItems", "response errorBody:" + response.errorBody())
            }
        })