J'essaie de me connecter à mon application. Lorsque j'essaie d'appeler l'API à l'aide de la bibliothèque de volley, cela donne com.Android.volley.ServerError et le code de réponse 400.
final String username = editTextUsername.getText().toString().trim();
final String password = editTextPassword.getText().toString().trim();
final String email = editTextEmail.getText().toString().trim();
StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String, String>();
params.put(KEY_USERNAME,username);
params.put(KEY_PASSWORD,password);`enter code here`
params.put(KEY_EMAIL, email);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
J'ai vu les nombreux exemples mais je n'ai trouvé aucune solution.
Dans la méthode ci-dessous
public void onErrorResponse(VolleyError error)
ajoutez cette ligne: -
error.printStackTrace()
Vous obtiendrez toute trace de pile qui vous donne l'erreur réelle. J'ai aussi eu cette erreur, mais dans mon cas, c'est TimeoutException.
J'ai eu le même problème. Cela a vidé toute ma journée. Enfin, j'ai trouvé la petite erreur, qui était que je passais une valeur nulle dans les paramètres.
Vérifiez si vous transmettez une valeur null au serveur dans getParams () ou votre objet JSON. Si oui, c'est peut-être le problème.
Le code de réponse 400 correspond à une mauvaise demande.
Quelques raisons pour cela.
Quelles sont les causes de cette erreur ... 1. URL incorrecte, vérifiez si votre URL contient des erreurs . 2. Paramètres manquants, tous les paramètres ont une valeur null ou il vous manque un paramètre . les clés définies dans les paramètres, il devrait correspondre à ceux des API . J'espère que ça aide!
Cette erreur peut signifier BAD REQUEST, vérifiez les en-têtes que vous envoyez. En dépassant la méthode getHeaders (), vous pouvez envoyer les bons en-têtes.
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return (headers != null || headers.isEmpty()) ? headers : super.getHeaders();
}
De plus, les WebServices ont généralement besoin d’en-têtes application/json, comme suit:
headers.put("Accept","application/json");
headers.put("Content-Type","application/json");