android - Retrofit 2 中的错误处理是如何进行的?我找不到大多数解决方案建议的 RetrofitError 类?

标签 android retrofit

我想使用 Retorfit 2 实现错误处理机制。

可用的解决方案是使用我在当前存储库中找不到的 RetrofitError 类。

最佳答案

如果你是同步请求,你在接口(interface)中定义你的请求方法为Call<List<Car>> .

执行请求后,您会收到响应和包装在 Response<T> 中的反序列化数据作为 Response<List<Car>> .这种包装让您可以访问 header 、http 代码和原始响应正文。

您可以通过以下方式访问错误正文:

 Call<List<Car>> carsCall = carInterface.loadCars();

   try {
      Response<List<Car>> carsResponse = carsCall.execute();
        } catch (IOException e) {
           e.printStackTrace();
           //network Exception is throw here
        }
     if(carsResponse != null && !carsResponse.isSuccess() && carsReponse.errorBody() != null){
          // handle carsResponse.errorBody()
     } 

对于异步调用,您会收到 Throwable ,如果网络调用过程中抛出I/O异常:

Call<List<Car>> call = service.loadCars();
call.enqueue(new Callback<List<Car>>() {
    @Override
    public void onResponse(Response<List<Car>> response) {
        // Get result from response.body(), headers, status codes, etc
    }

    @Override
    public void onFailure(Throwable t) {
      //handle error 
    }
});

关于android - Retrofit 2 中的错误处理是如何进行的?我找不到大多数解决方案建议的 RetrofitError 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32517114/

相关文章:

java - Retrofit 2 返回 HTML 而不是 JSON

java - 如何在 Android 中通过改造访问 JSON 响应中的特定值?

android - 使用 eclipse 在 Android 中快速构建

android - 如何使用 FileProvider 通过 Intent 授予提供多个 URI 的权限

android - 如何避免缩放后的ImageView被拖出屏幕?

flutter - 如何使用 Dart 处理 Retrofit 中的 204 响应?

mvvm - 为什么在观察LiveData时未调用onChanged()

android - 如何将改造与事件总线配对

java - androidManifestFile 中的 ActivityNotFoundException

android - 使用 ArrayAdapter/SimpleAdapter 在 ListView 上将一项加粗