diadia

興味があることをやってみる。自分のメモを残しておきます。

retrofit Requestヘッダーを参照する方法

例えばRequestヘッダーのAuthorizationという項目がきちんと送信できているか確認したいとする。

retrofitでは以下の様ににすればヘッダーの内容を確認することができる。

fun logInByAuthToken(authToken:String) {

  val retrofit = Retrofit.Builder()
    .baseUrl(BASE_URL)
    .addConverterFactory(GsonConverterFactory.create())
    .build()

  val service = retrofit.create(APIService::class.java) 
  service.loginWithAuthtoken(authToken).enqueue(object: Callback<AuthModel>{

    override fun onResponse(call: Call<AuthModel>, response: Response<AuthModel>) {
      println(response.headers()) //responseのheaderを参照
      println(call.request().headers()) //requestのheaderを参照
      if (response.isSuccessful) {
          ...省略...            
      }else if(response.isSuccessful == false) {
          ...省略...
      }
    }

    override fun onFailure(call: Call<AuthModel>, t: Throwable) {
         ...省略...
    }
}

解説

onResponseメソッドの引数にcall引数とresponse引数がある。これはそれぞれrequestとresponseにあたる。 requestはCallクラスなので、Callクラスのメソッド、属性を確認するとrequest()メソッドがある。 このメソッドの返り値はokhttp3.Requestクラスインスタンスである。このインスタンスにheaders()メソッドを用いるとヘッダー情報を取り出すことができる。

Retrofit 2.7.1 API

関連記事

Retrofit - diadia