У меня странное поведение при использовании Retrofit + Gson + Rx Java
Вот мой объект для переобработки
Retrofit.Builder()
.baseUrl(Constants.Urls.URL_BASE)
.addConverterFactory(GsonConverterFactory.create(Gson()))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(client)
.build()
Вот мой класс данных
data class User(
val id:Int,
val email:String,
val name:String)
вот мой модифицированный интерфейс
@Multipart
@POST(Constants.Urls.URL_LOGIN)
fun makeLogin(@PartMap map: Map<String, String?>): Observable<Model_User>
Когда вход в систему успешен, все работает как надо, но я получаю странное поведение, когда вместо json объекта в ответ я получаю строковую ошибку, например
{
"error": {
"code": 400,
"message": "Wrong password"
}
}
Наблюдаемые вызовы успешны в подписке с объектом User. И этот объект имеет нулевые значения в полях, которые не могут быть нулевыми.
my_api.makeLogin(map)
.subscribe(
{
//Here i got User(id = null,email = null,name = null)
},
{
//But i need to call error here on parsing failed
})
Что я должен сделать, чтобы выдать ошибку перед вызовом onNext? Возможно ли совершить ошибку броска дооснащения при сбое анализа Gson вместо пустого объекта?