web-dev-qa-db-fra.com

Dans la bibliothèque de volley donnant com.Android.volley.ServerError

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.

5
Vikas Gaurav

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.

4
Anil Ghodake

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.

4
Umasankar

Le code de réponse 400 correspond à une mauvaise demande.

Quelques raisons pour cela.

  1. Il peut y avoir un problème dans la méthode Request. Est-ce GET ou POST.
  2. L'API attend peut-être un en-tête d'autorisation.
3
Code-Warrior

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!

1
Sachin Soma

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");
0
alextfos