You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中使用Volley如何发送整数列表作为请求体

问题原因
  • 核心错误是使用了Request.Method.GET作为请求方法:GET请求的规范是不携带请求体的,绝大多数服务端框架(包括抛出HttpMessageNotReadableException的常见框架如Spring)默认不会解析GET请求的请求体内容,自然就会抛出「Required request body is missing」的错误。
  • 你用Postman测试时默认选择了POST方法携带JSON请求体,所以可以正常调用接口,而代码里用了GET方法,二者逻辑不匹配。
修复方案
  1. 把请求方法替换为Request.Method.POST,和Postman的测试逻辑对齐即可:
// 仅修改请求方法为POST即可
JsonArrayRequest request = new JsonArrayRequest(Request.Method.POST, url, myIntegerJsonArray, new Response.Listener<JSONArray>() {
    @Override
    public void onResponse(JSONArray response) {
        //... do stuff here
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        error.printStackTrace();
    }
});
  1. 如果你的接口确实要求使用GET方法传整数列表,就不能用请求体传参,需要把整数列表拼接成URL查询参数(比如myurl?ids=1&ids=3&ids=4或者myurl?ids=1,3,4),服务端从查询参数中取值即可。
额外注意事项

如果你修改为POST后还是报错,可以手动给请求设置Content-Type为application/json,重写getHeaders方法即可:

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

内容的提问来源于stack exchange,提问作者craftdeer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:24:01