1.入参接口定义如下:
{
"type": "All",// "All":自动全部分配,"":自动分配list
"list": [{
"id": "UQzDue9QkYOgF8Ev",//基金公司id
"route": "bvtest01",// 通道
"symbol": "002739.SZ"// 股票代码
}]
}
2.前端传递的list参数应该是标准的Json类型参数,下面是浏览器url自测的传参演示:
http://localhost:8080/xxxx/xxxxxxxxxx.json?type=&list=%5b%7b%22id%22%3a%22UQzDue9QkYOgF8Ev%22%2c%22route%22%3a%22bvtest01%22%2c%22symbol%22%3a%22002739.SZ%22%7d%5d
其中list=后面的部分为(通过url转码:http://tool.chinaz.com/tools/urlencode.aspx 后的地址栏编码):
[{"id":"UQzDue9QkYOgF8Ev","route":"bvtest01","symbol":"002739.SZ"}]
3.后端如何接收这个list,并转成我们需要的List<Map<String, String>>格式数据。
public Object xxxxxock(HttpServletRequest request, HttpServletResponse response,
@RequestParam String type,
@RequestParam( required = false) String list) {
Map<String, Object> resultMap = new HashMap<>();
List<Map<String, String>> formList = JSON.parseObject(list, List.class);//将String转换格式
if (!"All".equals(type) && formList.size() != 0) {
for (Map<String, String> map :
formList) {
String symbol = map.get("symbol");
String route = map.get("route");
String groupId = map.get("id");
}
}
解决的过程:
后台接收参数时报错,
The valid characters are defined in RFC 7230 and RFC 3986 错误
于是贴百度,发现
大概原因是:
在tomcat 8.0.35之后 ,tomcat对url的参数做了比较规范的限制,必须按照RFC 7230 and RFC 3986规范,对于非保留字字符,如果不做转义处理,一律都会报The valid characters are defined in RFC 7230 and RFC 3986 错误。
解决这个问题的办法有几个:
- 把非保留字字符做转义
- 就是使用保留字字符
- 将json数据进行urlencode编码就可以了 即把json中的{}编码