Ich versuche, eine Anmeldung zu erstellen, die einen Benutzernamen nimmt und diese Informationen zusammen mit dem authentifizierten Header an den Server pinn und posten und ein JSON-Objekt abruft. Die getHeaders()
gibt die richtigen Daten zurück und die öffentliche byte[] getBody()
gibt auch die richtigen Informationen zurück. Allerdings bekomme ich immer noch einen 415 Fehler. Gibt es etwas in diesem Code, den ich nicht sehe?Android Volley JSON Beitrag Login
import android.util.Base64;
import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;
import java.util.HashMap;
import java.util.Map;
public class LoginRequest extends StringRequest {
private static final String LOGIN_REQUEST_URL = "https://foobar.com";
private Map<String, String> params;
public LoginRequest(String username, String password, Response.Listener<String> listener) {
super(Method.POST, LOGIN_REQUEST_URL, listener, null);
params = new HashMap<>();
params.put("username", username);
params.put("userpin", password);
}
@Override
public Map<String, String> getParams() {
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
// Temporary Auth
String username = "[email protected]";
String password = "password";
String credentials = username + ":" + password;
String base64EncodedCredentials =
Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
headers.put("Content-Type", "application/json");
headers.put("Authorization", "Basic " + base64EncodedCredentials);
return headers;
}
@Override
public byte[] getBody() throws AuthFailureError {
//RAW PAYLOAD
// {"username":"[email protected]","userpin":"1234"}
String str = "{\"username\":\"" + params.get("username") + "\",\"userpin\":\"" + params.get("userpin") + "\"}";
return str.getBytes();
}
@Override
public String getBodyContentType() {
return "application/json";
}
}
Um zu verdeutlichen, unterscheiden sich der Benutzername und das Passwort für die Authentifizierung in getHeaders() von dem Login-Benutzernamen und dem Passwort, die vom Benutzer unter username und userpin eingegeben werden. – user2535063
Versuchen Sie, indem Sie 'application/json' in' application/json; charset = utf-8' ändern. Wenn es nicht funktioniert, entferne diese Zeile 'headers.put (" Content-Type "," application/json ");' –
Vielen Dank. Headers.put entfernen ("Content-Type", "application/json"); Problem gelöst. Sehr geschätzt. – user2535063