Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

248
Vistas
How to handle errors in onNext instead of onError inside RXJava

I want to show errors messages that come from my API response but every time onError() function is called inside RXJava It shows built-in Errors something Like time exception, network error, etc. please tell me how can I Show Api Response messages Like message.type , message.text these are my error messages. thanks

here is Api Response

{
    "code": 400,
    "status": "Bad Request",
    "message": {
        "type": "WARNING",
        "text": "User was not found"
    },
    "data": {
        "generatedMessage": false,
        "code": "ERR_ASSERTION",
        "actual": null,
        "expected": true,
        "operator": "=="
    }
}

Here is api call

 @POST("api/auth/login")
    fun login(@Body loginModel: loginModel): Observable<LoginResponseModel>

Here is Base URl Code

 private val CLIENT_URL = "http://rmms.dummy.org:3001"

    private val client = OkHttpClient.Builder().build()
    private val retrofit = Retrofit.Builder()
        .baseUrl(CLIENT_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
        .client(client)
        .build()

    fun<T> buildService(service: Class<T>): T{
        return retrofit.create(service)
    }

Here is ViewModel

class LoginViewModel : ViewModel() {

    var disposable = CompositeDisposable()
    var serviceBuilder = ServiceBuilder.buildService(ApiServices::class.java)
    var loginResponse: MutableLiveData<LoginResponseModel> = MutableLiveData()
    fun refresh(requirContext: Context, email: String, password: String) {
        login(requirContext, email, password)
    }

    fun login(requirContext: Context, email: String, password: String) {
        var login = loginModel(email, password)
        disposable.add(
            serviceBuilder.login(login)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .unsubscribeOn(Schedulers.io())
                .subscribeWith(object : DisposableSingleObserver<LoginResponseModel>(),
                    io.reactivex.Observer<LoginResponseModel> {

                    override fun onSuccess(value: LoginResponseModel?) {
                    }

                    override fun onError(e: Throwable?) {

                        if (e is retrofit2.HttpException) {
                            AlertMessageDialog.genaricAlertDialog(requirContext, "WARNING", "Invalid Credentials Provided"
                            )
                        } else if (e is SocketTimeoutException) {

                            Log.e("time exception******>", e.message.toString())
                        } else if (e is IOException) {
                            Log.e("network error******>", e.message.toString())
                        } else {
                            Log.e("unknown error******>", e?.message.toString())
                        }
                    }
                    override fun onNext(value: LoginResponseModel?) {

                        value?.let {
                            if (value.code == 200) {
                            }else{
                                                     AlertMessageDialog.genaricAlertDialog(requirContext,"${value.message.type}","${value.message.text}")
                            }
                        }
                    }

                    override fun onComplete() {

                    }
                })
        )
    }

    override fun onCleared() {
        super.onCleared()
        disposable.clear()
    }


}
over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda