2016-12-22 1 views
0

Je tente une demande de Volley via Android pour obtenir des informations d'identification Oauth en utilisant un type de subvention de mot de passe. Ce que j'essaie fonctionne dans le facteur, mais ne fonctionne pas dans Android et je ne suis pas sûr de ce que je fais mal. Ci-dessous, veuillez trouver le code que j'utilise:demande Android Volley échouant

final RequestQueue queue = Volley.newRequestQueue(this); 

    final String url = Constants.OAUTH_URL; 

    Map<String, String> body = new HashMap<>(); 
    body.put("grant", "password"); 
    final JSONObject jso = new JSONObject(body); 

    JsonObjectRequest postRequest = new JsonObjectRequest (Request.Method.POST, url, jso, 
      new Response.Listener<JSONObject>() 
      { 
       @Override 
       public void onResponse(final JSONObject response) { 
        //Do something 
       } 
      }, 
      new Response.ErrorListener() 
      { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        responseText.setText(error.toString()); 
       } 
      } 
    ) { 
     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String, String> headers = new HashMap<>(); 
      headers.put("accept", "application/vnd.TestKitchen.v1+json"); 
      headers.put("Authorization", BasicAuth.getBasicAuth(Constants.USERNAME, Constants.PASSWORD)); 
      headers.put("Content-Type", "application/json; charset=UTF-8"); 
      return headers; 
     } 
    }; 
    queue.add(postRequest); 

Mon URL OAuth est correcte, je l'ai vérifié plusieurs fois. Donc, le problème n'est pas une faute de frappe à cette fin. Tous les autres champs doivent toujours atteindre mon serveur et donner une réponse appropriée (que ce soit une erreur ou non), cependant toutes les demandes que j'envoie retournent avec une réponse 400. Quelque chose d'évident que je fais mal que je devrais corriger? Toute aide est appréciée. Merci.

+0

Le RequestMethod êtes-vous sûr que POST? Vous essayez d'obtenir les informations d'identification. – rmdroid

+0

J'ai réussi à comprendre, la demande était bien, j'étais connecté au mauvais réseau, il ne pouvait pas voir mon dev VM. Une fois que j'ai changé à un autre, cela a fonctionné. Je ne savais pas que c'était comme ça. Merci pour votre aide tout le monde! – cast2022

Répondre

0

Pourquoi utilisez-vous cette chose?

Map<String, String> body = new HashMap<>(); 
body.put("grant", "password"); 
final JSONObject jso = new JSONObject(body); 

Vous pouvez directement mettre la valeur en JSONObject

JSONObject jso = new JSONObject(); 
jso.put("grant", "password"); 

Dans le cas d'une API REST avec une charge utile JSON, 400 se trouvent habituellement, et je dirais correctement, utilisé pour indiquer que le JSON est invalide d'une manière ou d'une autre selon la spécification de l'API pour le service.