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

260
Views
Cómo manejar errores en onNext en lugar de onError dentro de RXJava

Quiero mostrar mensajes de error que provienen de mi respuesta API, pero cada vez que se llama a la función onError() dentro de RXJava Muestra errores incorporados, como excepción de tiempo , error de red , etc. Dígame cómo puedo mostrar mensajes de respuesta Api como message.type , message.text estos son mis mensajes de error. Gracias

aquí está la respuesta de API

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

Aquí está la llamada API

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

Aquí está el código URL base

 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) }

Aquí está 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!