在 Spring MVC 中使用 curl 将字符串值数组作为请求正文发布
Posted
技术标签:
【中文标题】在 Spring MVC 中使用 curl 将字符串值数组作为请求正文发布【英文标题】:Post Array of String values as request body using curl in Spring MVC 【发布时间】:2016-07-31 12:38:28 【问题描述】:无法使用 curl 将字符串 id 数组发布到 Spring mvc 控制器,因为它正在抛出 400
状态。
控制器方法:
@RequestMapping(value="/evidencesbyIds",method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> getEvidenceByIds(@RequestBody String[] ids)
// body here
CURL 命令:
curl -H "Content-type: application/json" -X POST -d '"ids":["1","2"]' http://localhost:8080/vt/evidencesbyIds
curl -H "Content-type: application/json" -X POST -d ""ids":["1","2"]" http://localhost:8080/vt/evidencesbyIds
curl -H "Content-type: application/json" -X POST -d ""ids":[\"1\",\"2\"]" http://localhost:8080/vt/evidencesbyIds
curl -H "Content-type: application/json" -X POST -d "\"ids\":[\"1\",\"2\"]" http://localhost:8080/vt/evidencesbyIds
我多次尝试执行 curl 命令,但它们抛出的状态为 400,异常为
"Can not deserialize instance of java.lang.String[] out of START_OBJECT token\n at"
【问题讨论】:
【参考方案1】:找到解决办法:
在请求正文中发布字符串数组的 CURL 命令:
curl -H "Content-type: application/json" -X POST -d "["1","2"]" http://localhost:8080/vt/evidencesbyIds
注意: 1. 控制器方法没有修改 2. 如果控制器接受 String id 列表作为请求正文,也可以使用相同的方法。
【讨论】:
以上是关于在 Spring MVC 中使用 curl 将字符串值数组作为请求正文发布的主要内容,如果未能解决你的问题,请参考以下文章
Spring mvc jackson json mapper-如何将unicode编码应用于json响应中的特殊字符