Cette commande cURL fonctionne bien quand je le lance sur mon terminal:demande Publier fonctionne bien dans cURL mais pas dans Android Volley
boucle -X POST -H "Content-Type: application/json" - H "autorisation: de base uname: pass123" -d '{ "userName": "uname", "mot de passe": "pass123"} "http://mysite123.com/api/Login"
maintenant, je suis en train d'utiliser Android Volley envoyer cette demande de publication. Le code est le suivant:
RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
String url = "http://mysite123.com/api/Login";
StringRequest stringRequest = new StringRequest(Request.Method.POST, 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();
error.printStackTrace();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String, String>();
params.put("userName", "uname");
params.put("password", "pass123");
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> headers=new HashMap<String,String>();
headers.put("Content-Type", "application/json");
headers.put("Accept", "application/json");
headers.put("Accept-Encoding", "utf-8");
String creds = String.format("%s:%s","uname","pass123");
String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.NO_WRAP);
headers.put("Authorization", auth);
return headers;
}
};
queue.add(stringRequest);
Mais il me donne l'erreur dans stackTrace comme:
09-03 07: 46: 43,823 17712-17918/com.ankitshubham97.gpsmonitoring E/Volley: [ 108117] BasicNetwork.performRequest: Code de réponse inattendu 400 pour http://mysite123.com/api/Login 09-03 07: 46: 43.833 17712-17712/com.ankitshubham97.gpsmonitoring E/Qmage: isQIO: le flux n'est pas un fichier QIO 09-03 07:46: 43.843 17712-17712/com.ankitshubham97.gpsmonitoring W/System.err: com.android.volley.ServerError 09-03 07: 46: 43.853 17712-17712/com.ankitshubham97.gpsmo nitoring W/System.err: à l'adresse com.android.volley.toolbox.BasicNetwork.performRequest (BasicNetwork.java:163) 09-03 07: 46: 43.853 17712-17712/com.ankitshubham97.gpsmonitoring W/System.err: at com.android.volley.NetworkDispatcher.run (NetworkDispatcher.java:112)
Quel pourrait être le problème? Ou toute méthode d'envoi direct de la commande curl à partir d'Android?
EDIT: Je même utilisé https://incarnate.github.io/curl-to-php/ pour convertir la commande cURL ci-dessus pour le code php et le php fonctionne bien aussi. Je me demande quel est le problème avec Volley!
J'ai essayé votre commande curl mais son donnant la même réponse 405 Méthode non autorisée - DOSarrest Internet Security –
C'est parce que j'ai donné une fausse URL, un nom d'utilisateur et un mot de passe ici au lieu des vrais. –