如何使用Java Volley框架发送指定结构的JSON POST请求
Java 结合Volley框架发送指定JSON POST请求实现步骤
前置配置
首先在Android项目的模块级build.gradle依赖块中引入Volley官方依赖:
dependencies { implementation 'com.android.volley:volley:1.2.1' }
同时在AndroidManifest.xml中声明网络权限:
<uses-permission android:name="android.permission.INTERNET" />
核心实现代码
你需要提交的请求体结构为{"data":["dog",45,256,256,2,5]},直接用Volley自带的JsonObjectRequest即可实现,不需要手动处理JSON格式拼接,具体代码如下:
// 1. 初始化请求队列,建议用全局ApplicationContext避免内存泄漏 RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); // 替换为你在Postman中调试通过的实际接口地址 String apiUrl = "你的接口请求地址"; try { // 2. 构造符合要求的JSON请求体 JSONObject requestBody = new JSONObject(); JSONArray dataArr = new JSONArray(); dataArr.put("dog"); dataArr.put(45); dataArr.put(256); dataArr.put(256); dataArr.put(2); dataArr.put(5); requestBody.put("data", dataArr); // 3. 构造JSON POST请求 JsonObjectRequest jsonRequest = new JsonObjectRequest( Request.Method.POST, apiUrl, requestBody, response -> { // 请求成功回调,response就是服务端返回的JSON结果,在这里写你的业务处理逻辑 Log.d("VolleySuccess", "返回结果: " + response.toString()); }, error -> { // 请求失败回调,在这里处理网络错误、超时、服务端报错等场景 Log.e("VolleyError", "请求失败: " + error.toString()); } ) { // 如果你的接口需要额外请求头(比如Postman里配置的Authorization、token等),重写这个方法添加即可 @Override public Map<String, String> getHeaders() throws AuthFailureError { Map<String, String> headers = new HashMap<>(); // 示例:headers.put("Authorization", "Bearer 你的token"); return headers; } }; // 4. 把请求加入队列发起调用 requestQueue.add(jsonRequest); } catch (JSONException e) { e.printStackTrace(); }
常见踩坑说明
- Volley的
JsonObjectRequest默认会自动设置Content-Type: application/json; charset=utf-8请求头,和Postman发JSON请求的头一致,不需要手动修改 - 构造参数时严格匹配类型:JSON数组里第一个值是字符串,后续5个值是整数类型,不要给数字加引号转成字符串,否则会出现服务端参数校验不通过的问题
- 如果是Android 9及以上版本调用HTTP明文接口,需要额外配置网络安全规则允许明文传输,正式环境建议优先使用HTTPS接口
内容的提问来源于stack exchange,提问作者G.George Glyn
相关产品推荐
相关产品推荐

