用curl测试json post请求

时间:2014-02-05 13:50:54

标签: spring

当使用以下curl请求测试我的spring代码时,它会因为http 400错误请求而失败(客户端发送的请求在语法上是不正确的。)

curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"ids":[1,2]}'  <someurl>

我对应的Spring控制器有一个看起来像这样的方法

@RequestMapping(value = "someurl", method = RequestMethod.POST)
  public @ResponseBody List<Result> multiple(@RequestBody List<Integer> ids){
  List<Result> list = new ArrayList<>();
  for(int id : ids){
    // do something with id and add to result list
  }
  return list;
}

我的网址是正确的,我几乎可以肯定我的卷曲请求也是正确的,所以我不知道我的代码有什么问题,这是我的第一个POST请求,GET都在工作。

编辑: 我正在使用Linux终端

1 个答案:

答案 0 :(得分:0)

@RequestBody只需要一个JSON数组(如果用于注释List)。你必须做两件事之一:

  1. 使用单个private List<Integer> ids字段创建表示POST数据的类型。更改您的控制器方法签名以使用该类型而不是List<Integer>
  2. 将您的JSON POST更改为:

    curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '[1,2]' <someurl>

  3. 任何一种解决方案都应该有效。