2 votes

Réception de NULL sur le corps d'erreur de la réponse si le code de statut est 400 avec retrofit dans Android

Je travaillais sur un processus de connexion et je suis resté bloqué. Le problème était que lorsque j'entrais un mauvais mot de passe, il lançait toujours l'exception NullPointerException parce que mon getMessage recevait une réponse nulle du backend. Après cela, ce que j'ai fait, c'est que j'ai changé mon code de statut dans le nœud de 400 à 200 (200 - que j'utilise pour le statut de réussite) et puis j'ai essayé la même procédure.

Ce qui signifie que mon rétrofit ne reçoit pas de réponse pour le code d'état 400 et quand je l'ai changé en 200, cela a bien fonctionné, c'était vraiment bizarre.

Si quelqu'un sait pourquoi cela se produit, si vous voulez que je poste mon code de connexion ou de nœud, je peux le faire.

MERCI !

EDIT

Voici ma méthode onResponse dans l'activité de connexion.

 public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {

            ServerResponse resp = response.body();

            if (resp.getmessage().equals(Constants.SUCCESS))
            {
                Toast.makeText(Login.this, resp.getmessage(), Toast.LENGTH_SHORT).show();
                goToProfile();

        }
        else {
                Toast.makeText(Login.this, resp.getmessage(), Toast.LENGTH_SHORT).show();
            }

        }

et voici mon code de nœud, actuellement tous les codes de statut sont 200 mais quand j'ai utilisé 400 pour le mauvais mot de passe et l'utilisateur non trouvé, il retourne null.

const User= require("../model/user.model.js");
const { initSession} = require('../utils/utils');

const logins =  (req,res,next)=> {  
console.log("login user::"+JSON.stringify(req.body));
console.log("password:::"+req.body.user.password);  
 User.findOne({ username : req.body.user.username }, function(err, user) {
    if (!user) {           
          return res.status(200).send({
              message : "User not found."
          });
      }    
      else {    

        if (user.validPassword(req.body.user.password)) {   
            console.log("login successfully!!!");            
            return res.status(200).send({
                message : "success"
            });

        }        
    else if(!(user.validPassword(req.body.user.password))) {
        console.log("wrong password");
        return res.status(200).send({
            message : "Wrong Password"
        });
    }
}
  })
  }

module.exports = { logins };

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