我想使用POST方法将JSONObject发送到服务器。我已经使用凌空库通过字符串参数来正常工作,但是如果我尝试使用json对象,则在调用json对象时显示错误,这是我的代码
private void makeJsonObjReq() { showProgressDialog(); JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST, Const.URL_LOGIN, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d(TAG, response.toString()); msgResponse.setText(response.toString()); hideProgressDialog(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d(TAG, "Error: " + error.getMessage()); hideProgressDialog(); } }) { /** * Passing some request headers * */ @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<String, String>(); headers.put("Content-Type", "application/json; charset=utf-8"); return headers; } @Override protected Map<String, String> getParams() { Map<String, String> params = new HashMap<String, String>(); params.put("un", "xyz@gmail.com"); params.put("p", "somepasswordhere"); return params; } }; // Adding request to request queue AppController.getInstance().addToRequestQueue(jsonObjReq,tag_json_obj); // Cancelling request // ApplicationController.getInstance().getRequestQueue().cancelAll(tag_json_obj); }
我的错误表单服务器是: [10031] BasicNetwork.performRequest: Unexpected response code 401
[10031] BasicNetwork.performRequest: Unexpected response code 401
如何解决这个问题呢。我要添加application/json;charset=utf-8 标题,请检查我的代码是否正确。请给我一个解决这个问题的建议
application/json;charset=utf-8
JsonObjectRequest中的第三个参数用于以jsonobject形式传递发布参数。对于标题,您需要发送两个单独的值,一个用于内容类型,一个用于字符集。
RequestQueue queue = Volley.newRequestQueue(this); private void makeJsonObjReq() { showProgressDialog(); Map<String, String> postParam= new HashMap<String, String>(); postParam.put("un", "xyz@gmail.com"); postParam.put("p", "somepasswordhere"); JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST, Const.URL_LOGIN, new JSONObject(postParam), new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d(TAG, response.toString()); msgResponse.setText(response.toString()); hideProgressDialog(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d(TAG, "Error: " + error.getMessage()); hideProgressDialog(); } }) { /** * Passing some request headers * */ @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<String, String>(); headers.put("Content-Type", "application/json; charset=utf-8"); return headers; } }; jsonObjReq.setTag(TAG); // Adding request to request queue queue.add(jsonObjReq); // Cancelling request /* if (queue!= null) { queue.cancelAll(TAG); } */ }