【发布时间】:2020-04-26 11:30:49
【问题描述】:
我在 Android 上使用 Retrofit (2.6) 来实现连接到 Web 服务器的服务,并请求服务器承担一些工作。相关代码可以总结如下:
interface MyService {
@GET(START_WORK)
suspend fun startWork(@Query("uuid") uuid: String,
@Query("mode") mode: Int):
MyStartWorkResponse
}
// Do some other things, include get a reference to a properly configured
// instance of Retrofit.
// Instantiate service
var service: MyService = retrofit.create(MyService::class.java)
我可以毫无问题地拨打service.startWork()并获得有效结果。但是,在某些情况下,Web 服务器会返回 400 错误代码,并带有包含特定错误信息的响应正文。但是,该请求不是格式错误的;只是还有一个问题应该引起用户的注意。问题是,我无法说出问题所在,因为我没有得到回应;相反,由于 400 错误代码,我的调用引发了异常。
我不明白如何修改我的代码以便捕获和处理 400 错误响应,并从响应正文中获取我需要的信息。这是我的 okhttp 客户端上的网络拦截器的工作吗?有人能解释一下吗?
【问题讨论】:
标签: android kotlin retrofit okhttp