无法在Android中通过Volley以URL编码的形式发布参数

Pre*_*hal 3 android android-volley

我正在尝试打一个api(用PHP编写)并用它发布参数。这是我的代码:

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
            url, null,
            new com.android.volley.Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    System.out.println("prerna succes volley "+response.toString());
                }
            }, new com.android.volley.Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {

            System.out.println("prerna fail volley "+error.toString());
        }
    })


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


        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<String, String>();
            params.put("action", "login");
            params.put("username", "abc@xyz.com");
            params.put("pass", "a");
            return params;
        }

    };
Run Code Online (Sandbox Code Playgroud)

我总是得到无效的用户名/密码,如果用户名和密码无效,则会在api中处理过。在这种情况下,api没有收到参数。我试图通过改造来做到这一点,并且可以很好地工作,这意味着API编码没有问题。如果出现凌空抽射,我在这里想念什么?

Pre*_*hal 5

感谢您的支持。我可以通过将JsonObjectRequest更改为StringRequest来解决该问题。我发现Volley JsonObjectRequest Post参数不再起作用 ,我知道JsonObjectRequest会产生一些意外问题。有我的代码:

    StringRequest jsonObjReq = new StringRequest(Request.Method.POST,
            url,
            new com.android.volley.Response.Listener<String>() {

                @Override
                public void onResponse(String response) {

                    try {
                        JSONObject jsonObject = new JSONObject(response.toString());
                        String no = jsonObject.getString("$PhoneNo");

                    } catch (JSONException e) {

                    }
                }
            }, new com.android.volley.Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {

            System.out.println("prerna fail volley " + error.toString());
        }
    })


    {
        @Override
        public String getBodyContentType() {
            Map<String, String> pars = new HashMap<String, String>();
            pars.put("Content-Type", "application/x-www-form-urlencoded");
            //return pars;
            return "application/x-www-form-urlencoded";
        }


        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<String, String>();
            params.put("action", "login");
            params.put("username", "abc@xyz.com");
            params.put("pass", "a");
            return params;
        }

    };
Run Code Online (Sandbox Code Playgroud)

但是,我仍然试图弄清楚为什么JsonobjectRequest无法正常工作。