我想发送二进制数据到Spring MVC中的POST方法。不需要多部分表单数据,因为不需要额外的信息。
@PostMapping(value = "/post", consumes = "application/octet-stream")
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void post(final RequestEntity<InputStream> entity) {
// final InputStream is = entity.getBody(); // process content
}
出于测试目的,使用cURL发送数据:
curl --header "Content-Type:application/octet-stream" --data-binary @pom.xml http://localhost:8080/post
但是每个请求都失败,HTTP状态为415:
{
"timestamp": "2020-01-22T08:27:28.063+0000",
"status": 415,
"error": "Unsupported Media Type",
"message": "Content type 'application/octet-stream;charset=UTF-8' not supported",
"path":"/post"
}
如何让它发挥作用?
3条答案
按热度按时间sycxhyv71#
问题出在post方法的
RequestEntity
参数上。只需使用
HttpServletRequest
作为参数。c6ubokkw2#
上面的代码和下面的命令对我很有效:
或者,可以在控制器端使用以下代码:
dsf9zpds3#
上述代码在内容类型为application/octet-stream的情况下运行良好