以下代码返回身份验证失败,错误为422.我想使用基本身份验证登录我的Github帐户。请告诉我我做错了什么
JsonObjectRequest request =new JsonObjectRequest(Request.Method.POST, "https://api.github.com/user", object, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("success","Successfully logged in");
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Error", "Error with authentication");
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
String loginEncoded = new String(Base64.encode((username + ":" + password).getBytes(), Base64.NO_WRAP));
headers.put("Authorization", "Basic " + loginEncoded);
headers.put("Content-Type", "application/json");
return headers;
}
};
requestQueue.add(request);
答案 0 :(得分:2)
我发现了问题所在。我没想到它可能是一个GET请求。我将REQUEST.Method.POST更改为REQUEST.Method.GET并且它工作正常。 是的我知道。当谈到与网络相关的东西时,我仍然是一个菜鸟。
答案 1 :(得分:1)
仔细检查您的json内容:Error 422 means "Unprocessable Entity":
422(不可处理实体)状态代码表示:
- 服务器了解请求实体的内容类型
- 并且请求实体的语法是正确的(因此400(错误请求)状态代码是不合适的)
- 但无法处理所包含的说明。
例如,如果XML请求主体包含格式正确(即语法正确)但语义错误的XML指令,则可能会出现此错误情况。