2 votes

Personnaliser le message onError() dans Rx java à partir de la sortie d'erreur de l'API du serveur

Je voulais imprimer l'erreur que le message de l'API envoie, car il y en a plusieurs sortes, par exemple : L'email est déjà présent, le nom d'utilisateur est déjà sorti, etc. Mais ce message n'affiche que HTTP 400 Bad Request

fun doSignUp(
        firstName: String,
        lastName: String,
        email: String,
        password: String,
        deviceId: String
    ) {

        ApiHelper().userSignup(
            firstName,
            lastName,
            email,
            password,
            "Android",
            strAdd)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(object : Observer<UserResponse>{
                override fun onComplete() {
                    Log.d("kb", "onComplete Call")
                }

                override fun onSubscribe(d: Disposable) {
                    Log.d("kb", "onSubscribe")
                }

                override fun onNext(t: UserResponse) {
                    Toast.makeText(applicationContext,"Please Upload Profile Pic...", Toast.LENGTH_SHORT).show()
                    val intent = Intent(applicationContext, SignupStep3Activity::class.java)
                    mPref.setAccessToken(t.data.accessToken)
                    startActivity(intent)
                }

                override fun onError(e: Throwable) {
                   Toast.makeText(applicationContext, e.localizedMessage, Toast.LENGTH_LONG).show()
                }
            })
    }

Voici ce que mon api affiche comme réponse d'erreur

    "message": "Email Already Exists",
    "code": 400,
    "errors": {
        "error_id": "15",
        "error_text": "Email Already Exists"
    },
    "data": []
}

Je suis nouveau à kotlin et ici, pardonnez-moi pour toute erreur.

0voto

milad salimi Points 1327

Dans votre onNext() vous avez besoin de quelque chose comme ça :

when (UserResponse.code()) {
                        200 -> {//Send appropriate message with intent here}
                        400 -> {//Send appropriate message with intent here}
                        401 -> {//Send appropriate message with intent here}
                        712 -> {//Send appropriate message with intent here}
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X