Dieser cURL-Befehl funktioniert prima, wenn ich es auf meinem Terminal laufen:Gesuch in cURL arbeiten gut, aber nicht in Android Volley
curl -X POST -H "Content-Type: application/json" - H "Authorization: Grund uname: pass123" -d '{ "username": "uname", "Passwort": "pass123"}' "http://mysite123.com/api/Login"
Jetzt versuche ich, Android Volley zu verwenden um diese Postanfrage zu senden. Der Code lautet wie folgt:
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);
Aber es gibt mir Fehler in stacktrace als:
09-03 07: 46: 43,823 17.712-17.918/com.ankitshubham97.gpsmonitoring E/Volley: [ 108117] BasicNetwork.performRequest: Unerwarteter Antwortcode 400 für http://mysite123.com/api/Login 09-03 07: 46: 43.833 17712-17712/com.ankitshubham97.gpsmonitoring E/Qmage: isQIO: stream ist keine QIO-Datei 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: unter com.android.volley.toolbox.BasicNetwork.performRequest (BasicNetwork.java:163) 09-03 07: 46: 43.853 17712-17712/com.ankitshubham97.gpsmonitoring W/System.err: bei com.android.volley.NetworkDispatcher.run (NetworkDispatcher.java:112)
Was könnte das Problem sein? Oder irgendeine Methode, den curl-Befehl direkt von Android zu senden?
EDIT: Ich habe sogar https://incarnate.github.io/curl-to-php/ verwendet, um den obigen cURL-Befehl in PHP-Code zu konvertieren, und der PHP läuft auch gut. Ich frage mich, was mit Volley los ist!
ich Ihre curl Befehl versucht, aber seine die gleiche Antwort 405 Methode gibt nicht erlaubt - DOSarrest Internet Security –
Das heißt weil ich falsche URL, Benutzername und Passwort hier anstelle der echten angegeben habe. –