【问题标题】:Response from Postman shows 200, But Android returns 403Postman 的响应显示 200,但 Android 返回 403
【发布时间】:2022-01-23 05:31:01
【问题描述】:

我正在尝试使用 Volley 开发一个 android 应用程序,当我检查 POSTMAN 并检索 200 时,我用来交流的 api 工作正常。

但是当我在我的应用程序中使用相同的 API 时,它返回给我403“禁止” <p〉You don't have permission to access /API/checkPassOtp on this server.〈/p〉

请找截图。

我已经为这个问题尝试了多种解决方案,但对我没有任何效果。

谁能帮帮我。

附加截击代码和错误响应

JSONObject jsonBody = new JSONObject();
try {
    jsonBody.put("otp", otp);
    Log.e("jsonBody", jsonBody.toString());
} catch (JSONException e) {
    e.printStackTrace();
}

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST, URL, jsonBody, new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
        // handle response data
        VolleyHelper.progressDialog.dismiss();
        Log.e("onResponse", response.toString());

    }
}, new Response.ErrorListener() {

    @Override
    public void onErrorResponse(VolleyError error) {
        VolleyHelper.progressDialog.dismiss();
        Toast.makeText(getApplicationContext(),error.toString(),Toast.LENGTH_SHORT).show();
        Log.e("onErrorResponse", error.toString());

    }

}) {
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        Map<String, String> params = new HashMap<String, String>();
        params.put("Content-Type", "application/json");
        return params;
    }
};


jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 2, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Application.getInstance().addToRequestQueue(jsonObjReq, "app");
volleyHelper.showProgressDialogWithTitle(MainActivity.this);

【问题讨论】:

  • 现在您希望我们就您使用完全保密的代码进行的 API 调用提供反馈……?请阅读How to Askminimal reproducible example,并相应地编辑您的问题。
  • Postman 使用哪种授权方式?
  • 我看到您有 13 个标头尚未共享,其中一些可能是访问 API 所必需的
  • 问题已更新为错误响应和 Volley 代码。
  • Content-Type", "application/json" 是我在 volley 中使用的标头

标签: php android api android-volley postman


【解决方案1】:

尝试使用

“接受”、“应用程序/json”

在您的参数中(同时使用)。

在连接我公司的网络服务器时,我必须使用 x-api-key,但我不确定你是否需要它。

【讨论】:

    【解决方案2】:

    --> 在 android 中使用 https 而不是 http,Postman 似乎可以使用 http,但 OkHttp 需要 https。

    我在 android 中因为这个错误 403 forbidden 被困了一天,但在 Postman 中成功了 200 次。

    【讨论】: