【发布时间】:2017-02-15 05:21:16
【问题描述】:
从两天开始我试图解决这个问题,但我仍然没有任何结果,为什么每次凌空返回我 403 错误。我错在哪里?我正在使用邮递员检查相同的网络服务,它返回成功结果。但是当我通过 volley 或 httpurlconnection 在 Android 中使用时,同样的事情会出现 403 错误。请帮助我找到我的错误。
这是我尝试过的代码:
StringRequest jsonObjectRequest = new StringRequest(Request.Method.POST, Constant.posturl, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
String result=response;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
NetworkResponse response = error.networkResponse;
int status = response.statusCode;
}
}) {
@Override
public Map<String, String> getHeaders() {
try {
headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
String credentials = Constant.USERNAME + ":" + Constant.PASSWORD;
String auth = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.DEFAULT);
headers.put("Authorization", auth);
return headers;
} catch (Exception e) {
e.printStackTrace();
return headers;
}
}
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("title", heading_edit_text.getText().toString());
params.put("content", body_edit_text.getText().toString());
params.put("Slug", heading_edit_text.getText().toString());
params.put("date", currentDate);
return params;
}
};
jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(50000, 3, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
requestQueue.add(jsonObjectRequest);
【问题讨论】:
-
403 将被禁止。你能在这里复制你的邮递员请求吗(编辑任何应该是私人的!)。您可以在邮递员中单击代码链接并复制 HTTP...
-
@Redman 我的用户名和密码是正确的,因为我在邮递员中也使用了相同的用户名和密码。邮递员返回成功结果。
-
您应该检查 base64 编码的令牌是否与您的邮递员请求和应用程序请求匹配
-
是的,它是匹配的,甚至有时我也通过在应用程序中使用我在邮递员中使用的相同字符串来检查它。
-
@Gavin Harris 我用邮递员图像编辑了我的问题...请检查它并让我知道我在应用程序中做错了什么。