Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

247
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!