博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Volley提交Json数据post
阅读量:4298 次
发布时间:2019-05-27

本文共 3309 字,大约阅读时间需要 11 分钟。

使用以下代码的时候,getParams()传递post请求,根本没有用,只能在构造方法里面传递JsonObject。在servlet中只能使用request.getInputStream()来获取输入流。因为没有设置对象的键值对,所以getParameter()也是没有办法获取的。

JsonRequest
jsonRequest = new JsonObjectRequest(Request.Method.POST,"http://222.20.9.33:8080/NoteServer/note/test.jsp", jsonObject, new Response.Listener
() { @Override public void onResponse(JSONObject response) { Log.d(TAG, "response -> " + response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e(TAG, error.getMessage(), error); } }) { //注意此处override的getParams()方法,在此处设置post需要提交的参数根本不起作用 //必须象上面那样,构成JSONObject当做实参传入JsonObjectRequest对象里 //所以这个方法在此处是不需要的// @Override// protected Map
getParams() {
// Map
map = new HashMap
();// map.put("name1", "value1");// map.put("name2", "value2");// return params;// } @Override public Map
getHeaders() { HashMap
headers = new HashMap
(); headers.put("Accept", "application/json"); headers.put("Content-Type", "application/json; charset=UTF-8"); return headers; } };

如果要传递一个对象的list,那该如何实现。最简单的方法就是将list转换为Json格式的字符串,以StringRequest的方式提交给servlet。这时候还要讲post请求的头部信息,做一下修改,不然也是传递不过去的。

“Content-Type”, “application/x-www-form-urlencoded”

RequestQueue mQueue = Volley.newRequestQueue(this);        StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://222.20.9.33:8080/NoteServer/note/test.jsp",                new Response.Listener
() { @Override public void onResponse(String response) { Log.d("TAG", response.toString().trim()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("TAG", error.getMessage(), error); } }) { @Override protected Map
getParams() throws AuthFailureError { Map
map = new HashMap
(); map.put("params1", result); return map; } @Override public Map
getHeaders() throws AuthFailureError { //设置头信息,不设置的话传递的信息都是null Map
map = new HashMap
(); map.put("Content-Type", "application/x-www-form-urlencoded"); return map; } };
Person person = new Person("xxxx", "24");        ArrayList
listP = new ArrayList
(); listP.add(person); listP.add(person); System.out.println(person.getName()); Gson json = new Gson(); Type type = new TypeToken
>() { }.getType(); result = json.toJson(listP, type);

使用Gson来转换对象列表,然后将json字符串传递给后台。

在servlet中获取传递的参数值

System.out.println(request.getParameter("params1"));    这样一个对象列表就可以传递到servlet,然后再进行json数据的解析。

安卓中使用了Gson库,安卓中自带的json将对象转化为json的方法比较麻烦,这个就比较好用些。

注意:在使用的时候,之前没有将post请求头部信息,重写所以上传之后,获取的数据一直都是null

参考:

转载地址:http://wpnws.baihongyu.com/

你可能感兴趣的文章
Nginx
查看>>
Navicat远程连接云主机数据库
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Mysql出现Table 'performance_schema.session_status' doesn't exist
查看>>
MySQL innert join、left join、right join等理解
查看>>
vivado模块封装ip/edf
查看>>
sdc时序约束
查看>>
Xilinx Jtag Access/svf文件/BSCANE2
查看>>
NoC片上网络
查看>>
开源SoC整理
查看>>
【2020-3-21】Mac安装Homebrew慢,解决办法
查看>>
influxdb 命令行输出时间为 yyyy-MM-dd HH:mm:ss(年月日时分秒)的方法
查看>>
已知子网掩码,确定ip地址范围
查看>>
判断时间或者数字是否连续
查看>>
docker-daemon.json各配置详解
查看>>
Mac 下docker路径 /var/lib/docker不存在问题
查看>>
Docker(一)使用阿里云容器镜像服务
查看>>
Docker(二) 基础命令
查看>>
Docker(三) 构建镜像
查看>>
Spring 全家桶注解一览
查看>>