У меня есть веб-сервис, который возвращает список пользователей по теме, если нет пользователя для этой темы, он просто возвращает HTTP-код 204 (без содержимого).
Это мой призыв к модернизации2 для этой услуги (в Котлине)
@GET("/user/{topic}")
fun getAllUserFor(@Path(value="topic",encoded=true) topic:String) :Observable<List<User>>
И мое исполнение:
fun getAllUsers(topic: String, onSuccess: Consumer<List<User>>, onFail:Consumer<Throwable>){
val api = NetworkLayer.getUserApi()
api.getAllUserFor(topic)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(onSuccess,onFail)
}
Работает нормально, за исключением случаев, когда в теме нет пользователей, поскольку при отсутствии пользователей сервер отвечает кодом 204, полученным в качестве исключения.
Я использую ScalarsConverterFactory & GsonConverterFactory для анализа ответа Json с Retrofit2.
аналогичная проблема обсуждалась здесь но их сервер отвечает только http кодом без какого-либо контента! В моем случае сервер вернет список пользователей в виде тела Json, когда есть один или несколько пользователей, и ответ 204, когда нет пользователей, поэтому мне нужно обработать оба случая вместе с другими обычными ошибками http.