volley用法之 以post方式发送 json 参数
需求是这样
我们需要发送一个post请求向服务器要参数。要求是发送的post参数也要是json格式。
简单一点的是这样的:

如果要发送的是这样简单的json格式,我们可以简单的使用map来实现:
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
Map<String, String> merchant = new HashMap<String, String>();
merchant.put("id", "id");
merchant.put("ncode", "ncode");
merchant.put("tradingName", "tradingName");
Log.d("map", map.toString());
JSONObject jsonObject = new JSONObject(merchant);
Log.e(TAG, "getdata: " + jsonObject.toString());
JsonRequest<JSONObject> jsonRequest = new JsonObjectRequest(Request.Method.POST, "", jsonObject,
new Response.Listener<JSONObject>() {
@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
public Map<String, String> getHeaders() {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Accept", "application/json");
headers.put("Content-Type", "application/json; charset=UTF-8");
return headers;
}
};
requestQueue.add(jsonRequest);
}
这里主要用到的就是
JSONObject jsonObject = new JSONObject(map);
这个方法,可以很方便的将map转成json数据。
如果需要传的是个有嵌套的json数据又该怎么办呢?
例如:

相比之前的数据,我们看到 merchant 也是一个json Object
这种嵌套的格式该怎么写呢?也很简单这里是嵌套,我们也写一个map的嵌套
就好啦!
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
Map<String, String> merchant = new HashMap<String, String>();
merchant.put("id", "id");
merchant.put("ncode", "ncode");
merchant.put("tradingName", "tradingName");
Map<String, Object> map = new HashMap<>();
map.put("billType", "ADHOC");
map.put("collectionCode", "string");
map.put("otherRefNo", "string");
map.put("contactMode", "SMS");
map.put("merchant", merchant);
map.put("currency", "SGD");
map.put("amount", " 0.00");
Log.d("map", map.toString());
JSONObject jsonObject = new JSONObject(map);
//后面一样的,省略。
这样再使用 JSONObject 的方法就可以生成我们想要的json格式啦!很简单是吧。
下面来说下JsonRequest的参数:
参数一:
请求方式 (这里是post)
参数二:
请求的URL
参数三:
请求的参数(如果是get请求方式则为空 null)
参数四:
服务器相应的回调(可以根据服务器的相应码区分不同的情况)
参数五:
服务器未响应的回调(可以做一些简单的提示)
谢谢阅读!
volley用法之 以post方式发送 json 参数的更多相关文章
- Java 用HTTP的方式发送JSON报文请求
前言: 项目调用第三方接口时,通常是用socket或者http的通讯方式发送请求:http 为短连接,客户端发送请求都需要服务器端回送响应,请求结束后,主动释放链接.Socket为长连接:通常情况下S ...
- java 模拟http请求,通过流(stream)的方式,发送json数据和文件
发送端: /** * 以流的方式 * 发送文件和json对象 * * @return */ public static String doPostFileStreamAndJsonObj(String ...
- HttpClient通过Post方式发送Json数据
服务器用的是Springmvc,接口内容: @ResponseBody @RequestMapping(value="/order",method=RequestMethod.PO ...
- springboot使用RestTemplate以post方式发送json字符串参数(以向钉钉机器人发送消息为例)
使用springboot之前,我们发送http消息是这么实现的 我们用了一个过时的类,虽然感觉有些不爽,但是出于一些原因,一直也没有做处理,最近公司项目框架改为了springboot,springbo ...
- HttPclient 以post方式发送json
使用HttpClient 以POST的形式发送json字符串 步骤: 1.url .parameters 2.创建httpClient对象 3.创建HttpPost对象 4.为post对象设置参数 5 ...
- C# ContentType: "application/json" 请求方式传json参数问题
处理Http请求时遇到的ContentType为application/json方式,记录下这种Post请求方式下如何传json参数: var request = (HttpWebRequest)We ...
- postman发送json参数到后端controller报错415的解决方案
警告 [http-nio-8080-exec-9] org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.l ...
- Volley用法
RequestQueue requestQueue = Volley.newRequestQueue(this); JsonObjectRequest jsonObjectRequest = new ...
- JMeter学习(三十五)使用jmeter来发送json/gzip格式数据
一.使用jmeter来发送gzip数据 有时候我们需要模拟在客户端将数据压缩后, 发送(post)到服务器端. 通常这种情况,会发生在移动终端上. 这样做的好处, 是可以节省流量. 当然, 服务器返 ...
随机推荐
- Linux用户体系和文件权限总结
一. Linux系统用户和用户组相关文件 1. /etc/passwd文件 这个passwd文件是Linux用户信息文件.文件格式说明如下: root:x:0:0:root:/r ...
- 游戏启示录 关于Update的相关问题
游戏启示录 关于Update的相关问题 这里说的Update是指的游戏的主循环.一般情况下.为了程序的方便控制我们一般只会有一个主循环.所有的游戏逻辑都会在这一个循环中完成.(额,其实这么做有点浪费. ...
- WebApi安全性 使用TOKEN+签名验证
首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候,会面临着许多的安全性问题, ...
- 让我们再为C#异步编程Async正名
本文版权归博客园和作者吴双本人共同所有.转载和爬虫必须在显要位置注明出处:http://www.cnblogs.com/tdws 半年前翻译了一系列很糟糕的异步编程文章,用异步的常用语来说:" ...
- Memcached初识
高性能分布式内存对象缓存系统. 参考: Memcached官网: Memcached简介-1:Memcached简介-2: Memcached 教程 | 菜鸟教程:
- python学习笔记(基础一:'hello world'、变量、字符编码)
第一个python程序: Hello World程序 windows命令行中输入:python,进入python交互器,也可以称为解释器. print("Hello World!" ...
- 搜狗输入法linux安装 以及 12个依赖包下载链接分享
搜狗输入法linux安装版,先安装各种依赖包,大概12个依赖,可能中途还需要其他依赖,可以效仿解决依赖问题.如图这12个文件要是手动点击下载,那也太笨点了,我们要用shell命令批量下载.命令如下:w ...
- 漫谈Nuclear Web组件化入门篇
目前来看,团队内部前端项目已全面实施组件化开发.组件化的好处太多,如:按需加载.可复用.易维护.可扩展.少挖坑.不改组件代码直接切成服务器端渲染(如Nuclear组件化可以做到,大家叫同构)... 怎 ...
- 学习笔记 UpdateXml() MYSQL显错注入
在学习之前,需要先了解 UpdateXml() . UPDATEXML (XML_document, XPath_string, new_value); 第一个参数:XML_document是Stri ...
- CALayer基本介绍与常见属性
属性框架:QuartzCore CA: CoreAnimation -> 核心动画,所有的核心动画都是添加给layer的! 与UIView的区别: 1.layer负责内容的展示,不接受任何用户交 ...