Okhttp/OkHttpUtils 提交数组类型参数或者对象类型参数实现方法

最近项目业务需要通过接口给后台通过post方式提交复杂的格式数据,但是发现现有的网络请求工具 OkHttpUtils无法满足现在的业务需求。通过查找相关的资料发现Okhttp传递本质是把数据转换成对应的json数据格式后端通过特定的对象模型转换为需要的数据格式类型

如下是后端需要的数据类型

{
  "name": "king",
  "code": "2019",
  "mobile": "138*********",
  "menu_name": ["设置","添加","修改"],
  "city_name": ["北京","天津","上海"],
  "IsDelete": 0
}

可以发现上面的参数menu_name和city_name是数组类型的参数;

解决思路

1.把上面的参数对象写成javaBean类称之为ParamBean;

2.通过gson把ParamBean转成json字符串

String param = new Gson().toJson(ParamBean);

完整的方法实现如下

 /**
     * @param userDetailParam 请求参数
     * @param url             地址
     */
 public static void postRequestByObject( Object paramBean, String url) {

        String param = new Gson().toJson(paramBean);
        OkHttpClient client = OkHttpUtils.getInstance().getOkHttpClient();
        RequestBody body = RequestBody.create(MediaType.parse("application/json"), param);
        Request request = new Request.Builder()
                .url(url)
                .post(body)
                .build();

        client.newCall(request)
                .enqueue(new Callback() {
                    @Override
                    public void onFailure(final Call call, final IOException e) {
                        
                    }

                    @Override
                    public void onResponse(final Call call, final Response response){
                                          });
                    }
                });
    }

 

你可能感兴趣的:(Android)