处理空服务器响应案例

时间:2019-02-18 13:08:41

标签: android nullpointerexception retrofit2 onerror server-response

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

服务器以这样的方式进行处理:当列表中没有任何项目时,它不返回空列表,而是返回带有响应代码204的null ...

如果我在列表为空的情况下使用Observable<List<Item>>,则由于正文为空,将触发onError 如果我使用CompletableObservable<Void>,将无法处理返回的任何数据。...

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

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

1 个答案:

答案 0 :(得分:0)

  • 204:无内容表示查询已成功处理,但无信息可返回。

您可以在OnError方法中使用它以提高可视性:

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

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

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

祝你好运!