'Retrofit2 post request is successful but I'm not able to retrieve token from response body

So I'm trying to making a login(post) request to an API (https://reqres.in/api/login) with retrofit 2. The connection was successful as the response code is 200, when I did the same on Postman I received a response which contains a token string which I want but in android studio when I log the response body it gives different output. I am new to kotlin so I think I must be doing something wrong while retrieving response.

Output I'm receiving:

Response{protocol=h2, code=200, message=, url=https://reqres.in/api/login} 

Output I want (token field)

{
    "token": "QpwL5tke4Pnpja7X4"
}

Retrofit Builder

val retrofit = Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl(apiUrl)
                .build()
val api : reqresAPI = retrofit.create(reqresAPI::class.java)

API Interface

interface reqresAPI {

    // FOR REFERENCE
    // https://reqres.in/api/login

    // ANNOTATE WITH POST TO SEND DATA
    @POST(value = "login")
    fun sendData(
          @Body  user: User
    ): Call<ResponseModel> // CALL IS USED TO MAKE AN API CALL
}

Response Model

class ResponseModel{
    val token : String = ""
        get() = field
}

User model with 2 parameters email and password

class User (
    val email :String,
    val password :String
)

Calling API

 val call = api.sendData(user)
                call.enqueue(object : Callback<ResponseModel>{
                    override fun onResponse(call: Call<ResponseModel>, response: Response<ResponseModel>) {
                        Log.d("LOGGER", response.toString())
                    }
                    override fun onFailure(call: Call<ResponseModel>, t: Throwable) {
                        Log.d("LOGGER", "ERROR "+t.message.toString())
                    }
                })


Solution 1:[1]

Please change this

class ResponseModel{
    val token : String = ""
        get() = field
}

to this

class ResponseModel{
    @SerializedName("token")
    val token : String
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1