android - 处理空服务器响应情况

标签 android nullpointerexception retrofit2 onerror server-response

我正在调用端点以从服务器获取对象列表。使用 Retrofit2.0 + RxJava 进行 api 调用。

服务器以这样的方式实现,当列表中没有项目时,它不会返回空列表,而是返回空值和响应代码 204...

如果我使用 Observable<List<Item>>当列表为空时,它会因为 null body 而命中 onError 如果我使用 CompletableObservable<Void>我将无法处理返回的任何数据....

我考虑过通过验证错误消息并假设 if 是一个空异常来继续正常流程来处理这个问题,但我对这种 hack 并不完全满意....

有没有办法处理这种情况?

最佳答案

  • 204 : No content 表示查询成功处理但没有信息返回。

您可以在 OnError 方法中使用它来获得更多可见性:

@Override
public void onError(Throwable e) {
    try {

          Log.e("errorL", ((HttpException) e).response().errorBody().string());

        } catch (IOException e1) {
        e1.printStackTrace();}}

祝你好运!

关于android - 处理空服务器响应情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54748068/

相关文章:

android - 如何阻止 Android 应用程序使用权限

Android.Views.ViewStates.Gone 在 CustomListAdapter 中导致不可预测的结果

java - 尝试使用 getChildAt() 取消选择 View

android - 具有复杂Json结构的房间

android - 改造解析 JSON 动态键

java - 如何使用 Retrofit 2 获取字符串响应?

android - 无法在 Android 上运行的 Kivy 应用程序中截取屏幕截图

android - 如何在android-ndk项目中使用C++类

java - 安卓:空指针异常 'double java.lang.Double.doubleValue()'

java - JButton 监听器调用类中的方法给出 NullPointerException