我正在通过android尝试使用密码授予类型获取Oauth凭据的Volley请求。我正在尝试在邮递员工作,但不是在Android工作,我不知道我做错了什么。请在下面找到我正在使用的代码:
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);
我的OAuth网址是正确的,我已多次验证过。所以问题不是这方面的错字。所有其他字段仍然应该到达我的服务器并给出适当的响应(无论是否是错误),但是我发送的所有请求都返回400响应。有什么明显我做错了我应该修理吗?任何帮助表示赞赏。谢谢。
答案 0 :(得分:0)
你为什么要用这个东西?
Map<String, String> body = new HashMap<>();
body.put("grant", "password");
final JSONObject jso = new JSONObject(body);
您可以直接将值放在JSONObject
中JSONObject jso = new JSONObject();
jso.put("grant", "password");
对于带有JSON有效负载的REST API,通常情况下,我会说400,用于表示根据服务的API规范,JSON在某种程度上无效。