Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

249
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda