java - 响应不成功时如何在改造中读取错误正文?
问题描述
我在 Android 中使用改造来执行 api。
示例片段
Call<UniversalPojo> call = apiInterface.storeData(AppClass.getInstance().getLoggedInUser().getRemember_token(), requestBody);
call.enqueue(new Callback<UniversalPojo>() {
@Override
public void onResponse(Call<UniversalPojo> call, Response<UniversalPojo> response) {
if (response.isSuccessful()) {
} else {
//I want to read code at this stage in string.
}
}
@Override
public void onFailure(Call<UniversalPojo> call, Throwable t) {
t.printStackTrace();
}
});
我的问题是如何在 if (response.isSuccessful()) 的 else 块中获取 String 中的错误。
解决方案
使用OkHttpClient
类的addInterceptor(interceptor: Interceptor)
功能
覆盖intercept(chain: Interceptor.Chain)
函数并按预期抛出异常:
class NetInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request()
val response = chain.proceed(request)
val code = response.code
val body = response.body
// if body is null or something unexpected
throw IOException("receive empty body")
// else do nothing
}
}
推荐阅读
- javascript - wp_localize_script 功能不工作:遵循类似的问题解决方案
- xml - Android 调试器显示 xml 文件有问题,但我找不到
- sql-server - 我的简单 sqlxml 查询有什么问题?
- python - 如何解决“未定义名称'bot'”错误?
- flutter - Flutter - 列内的 TabBar
- flutter - Flutter 通知面板
- wordpress - WooCommerce / PDF 发票 / 将税率四舍五入到小数点后一位
- python-3.x - 简单的方格查找
- image - 需要上传用户图片输入 - P5 JavaScript 库
- oop - 学习 Kotlin 中构造函数的语法