【问题标题】:Retrofit - onFailure on non-empty body, onResponse on empty body改造 - 非空主体上的 onFailure,空主体上的 onResponse
【发布时间】:2019-11-19 11:40:07
【问题描述】:

我的 GET 请求在 Android Studio 中无法正常工作。我试图在 Postman 中提出相同的请求,结果我总是得到正确正文的响应代码 200。但是,当响应正文为空(没有数据)和 onFailure 响应正文不为空(有一些保留)时,使用 Retrofit 我得到 onResponse(200 代码)。

编辑:我刚刚在日志中注意到这样的错误:Expected BEGIN_OBJECT but was STRING at line 1 column 22 path $[0].reservationDate

EDIT2:JSON 响应

[
    {
        "reservationDate": "2019-10-30",
        "id": "4"
    }
]

API 服务:

    @Headers("Authorization: Bearer ...")
    @GET("reservations")
    fun getSchedule(@Query("id") id: Int,
                    @Query("reservationDate") reservationDate: LocalDate

    ):  Call<List<ScheduleModel>>


    companion object {
        fun create(): ScheduleService{

            var retrofit = Retrofit.Builder()
                .baseUrl("myUrl")
                .addConverterFactory(GsonConverterFactory.create())
                .build()

            return retrofit.create(ScheduleService::class.java)
        }
    }
}
data class ScheduleModel(
    val id: Int,
    val reservationDate: LocalDate
)
fun getReservations() {
        var service = ScheduleService.create()
        var localdate = LocalDate.of(2019,10,30)

        var call = service.getSchedule(4, localdate)

        call.enqueue(object : Callback<List<ScheduleModel>> {

            override fun onResponse(call: Call<List<ScheduleModel>>, response: Response<List<ScheduleModel>>) {
                if (response.code() == 200) {
                    Toast.makeText(applicationContext, "It's ok", Toast.LENGTH_SHORT).show()
                }
            }

            override fun onFailure(call: Call<List<ScheduleModel>>, t: Throwable) {
                Toast.makeText(applicationContext, "Failure", Toast.LENGTH_SHORT).show()
            }
        })
    }

【问题讨论】:

  • 显示您的 JSON 响应
  • 请在您的代码中实现空值检查。

标签: android kotlin


【解决方案1】:

您的idreservationDate 响应是String,但您尝试将其解析为IntLocalDate。改变类型,它会工作的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2014-05-31
    • 2019-04-22
    • 1970-01-01
    相关资源
    最近更新 更多