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