首页 > 解决方案 > 响应不成功时如何在改造中读取错误正文?

问题描述

我在 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 中的错误。

标签: javaandroidretrofitretrofit2

解决方案


使用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
    }
} 

推荐阅读