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