提问者:小点点

Retrofit 2 post请求成功,但我无法从响应正文中检索令牌


所以我试图作出登录(后)请求API(https://reqres.in/api/login)与改造2.连接是成功的,因为响应代码是200,当我做了同样的Postman我收到一个响应,其中包含一个令牌字符串,我想要,但在android工作室当我日志的响应体它给出了不同的输出.我是新来的kotlin所以我想我一定是做错了什么,而检索响应。

我收到的输出:

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

我想要的输出(令牌字段)

{
    "token": "QpwL5tke4Pnpja7X4"
}

改造生成器

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

API接口

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
}

响应模型

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

具有2个参数电子邮件和密码的用户模型

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

呼叫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())
                    }
                })

共1个答案

匿名用户

请换一下这个

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

对这个

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