Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用cURL发送带有请求参数的POST请求?_Java_Curl_Spring Rest - Fatal编程技术网

Java 如何使用cURL发送带有请求参数的POST请求?

Java 如何使用cURL发送带有请求参数的POST请求?,java,curl,spring-rest,Java,Curl,Spring Rest,我正在尝试使用cURL将POST请求发送到我的本地应用程序: host="http://localhost:8080" $(curl -s -X POST -H "Content-Type: application/json" -d '{"name":"Test", "description":"Test"}' $host/games/new?user_id=c13fb734-c72a-48a0-9fd7-5fbc79c6285a) 我的控制器: @RequestMapping(“游戏”) @

我正在尝试使用cURL将POST请求发送到我的本地应用程序:

host="http://localhost:8080"
$(curl -s -X POST -H "Content-Type: application/json" -d '{"name":"Test", "description":"Test"}' $host/games/new?user_id=c13fb734-c72a-48a0-9fd7-5fbc79c6285a)
我的控制器:

@RequestMapping(“游戏”)
@RestController
公共类游戏控制器{
私有静态最终字符串ROOT\u URL=ServerConfig.GAMES\u HOST+“/GAMES”;
@后映射(value=“new”)
公共响应添加(@RequestParam(“user_id”)UUID userId,
@RequestBody字符串(新游戏){
String url=ROOT_url+“/new?userId=“+String.valueOf(userId);
RestTemplate=新的RestTemplate();
返回模板.postForEntity(url、newGame、String.class);
}
}
但在春天,我得到了一个错误:

{"errors":["user_id should be of type java.util.UUID"],"status":"BAD_REQUEST","message":"Failed to convert value of type 'java.lang.String' to required type 'java.util.UUID'; nested exception is java.lang.IllegalArgumentException: Invalid UUID string: new"}
也就是说,cURL将
new
作为
user\u id
的值发送。 错误在哪里?

分析 长话短说,从概念上讲,
@RequestParam
@RequestBody
是互斥的:查询参数(
@RequestParam
)作为请求主体发送

请参阅此处的其他详细信息:

解决方案 目前,有两种选择:

  • 只保留请求参数(
    @RequestParam
    ):将每个参数(即每个JSON属性)作为查询参数传递
  • 仅限于请求正文(
    @RequestBody
    ),例如:

  • 将所有内容作为JSON请求体传递
  • 将所有内容作为JSON请求主体传递,除了
    user\u id
    参数。参数可以设置为
    @PathVariable
    @RequestMapping
    应该使用适当的占位符来引用它

  • 如果在JSON中包含用户id会怎么样?例如
    -d'{“名称”:“测试”,“描述”:“测试”,“用户id”:“c13fb734-c72a-48a0-9fd7-5fbc79c6285a”}