我正在尝试将JSON字符串作为请求发送到我的应用程序。这是我的代码:
@RequestMapping(
value = "/mylink/upload",
method = RequestMethod.POST,
consumes ="application/json",
produces = "application/json")
public
@ResponseBody
List<Upload> upload(
@RequestParam(value = "hdfsLocation") String hdfsLocation
) throws Exception {
return S3HdfsTransfer.uploadFromHDFS(hdfsLocation);
}
我正在尝试向Postman发送请求。我使用的方法是POST,标题包含:Accept&#34; application / json&#34;,Content-Type&#34; application / json&#34;,请求正文如下:
{
"hdfsLocation" : "hdfs://145.160.10.10:8020"
}
这是我得到的回应。如果我将参数放在URL中,它就可以工作。
{
"httpStatus": 500,
"appErrorId": 0,
"message": "Required String parameter 'hdfsLocation' is not present",
"trackingId": "8c6d45fd-2da5-47ea-a213-3d4ea5764681"
}
知道我做错了吗?
谢谢, 谢尔班
答案 0 :(得分:1)
不应该是@RequestBody
而不是@RequestParam
吗?
此外,即使在使用@RequestBody
之后,整个JSON字符串:
{
"hdfsLocation" : "hdfs://145.160.10.10:8020"
}
将是String hdfsLocation
的值,而不仅仅是hdfs网址的值。因此,您必须自己解析JSON以获取hdfs url。
答案 1 :(得分:1)
您似乎已将@RequestBody
与@RequestParam
混淆了。请执行以下任一操作:
将请求参数作为请求参数传递(不作为正文)。喜欢,(编码)
将@RequestParam
替换为@RequestBody
。如果您要发送正文,请不要将其与请求参数一起发送。这是两件不同的事情。
我猜你看过了。)