正文中带有json的android volley请求不起作用

时间:2019-12-19 19:00:38

标签: java android json get android-volley

我正在尝试通过Android应用程序使用API​​。我有以下代码尝试对指定的端点执行GET请求。它应该返回一个JSON数组。我有要求工作到该端点。在正文中,我必须包含一个简单的JSON对象: { “ user_id”:“ 2345” }

当我在邮递员中使用它时,它工作正常。当我在Volley中使用以下代码运行它时,出现错误: org.json.JSONException:值**** {“ errorType”:“ ValidationException”,“ errorMessage”:“ ExpressionAttributeValues包含无效值:一个或多个参数值无效:AttributeValue可能不包含用于以下内容的空字符串键

我可以通过删除或在请求的JSON主体中出错来在Postman中重新创建此行为。然后,我在邮递员中遇到了同样的错误。这告诉我尸体发送不正确。

这是我正在使用的代码:

{


    JSONObject jsonObject = new JSONObject();

    try{
        jsonObject.put("user_id","2345");
    }catch (Exception ex)
    {
        Log.e(LOGLABEL1, "Error: " + ex.getMessage() + "   ******    " + ex.getStackTrace());
    }

    final String jsonString = jsonObject.toString();
    Log.d(LOGLABEL1, "JSON Object after encoding: " + jsonString);


    arrayRequest = new JsonArrayRequest(Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {



        @Override
        public void onResponse(JSONArray response) {
            MessageTextView.setText("Response: " + response.toString());
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("API Connection", error.getMessage());
            MessageTextView.setText("Error: " + error.getMessage());
        }
    })
    {
        @Override
        public byte[] getBody() {
            try {
                return jsonString == null ? null : jsonString.getBytes("utf-8");
            } catch (UnsupportedEncodingException uee) {
                Log.e(LOGLABEL1, "Error occured!");
                return null;
            }
        }

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

}
//        end of the request

如您所见,我覆盖了getHeaders()和getBody()方法。头一个工作正常,当我使用getHeaders()查看记录的输出时,按预期看到了“ Content-Type = application / json”,但正文显示为[B @ d39db9d。

我也尝试过将json数组对象传递给jsonRequest参数,结果相同。身体停留在[B @ d39db9d。

不知道为什么身体无法正常运行,或者也许是这样,而我正在丢失某些东西。无论哪种方式,我都可以使用一些帮助。预先感谢!

0 个答案:

没有答案