【发布时间】:2016-08-22 10:52:29
【问题描述】:
我需要编写一个能够处理CUrl发送的二进制数据的应用程序,例如:
curl localhost:8080/data --data-binary @ZYSF15A46K1.txt
我创建了一个POST处理方法如下:
@RequestMapping(method = RequestMethod.POST, value = "/data")
public void acceptData(HttpEntity<byte[]> requestEntity) throws Exception {
process(requestEntity.getBody());
}
但它似乎没有返回原始二进制数据。我尝试发送一个 GZip 文件,在经过 Spring 之后,它现在可以更长时间地解压缩,这让我相信我得到的数据要么太多,要么太少。
如何解决此问题并获取原始二进制数据?
【问题讨论】:
-
尝试使用
HttpServletDequest作为控制器的输入参数,并从InputStream读取原始数据。 -
@GeminiKeith 也尝试过,由于某种原因它总是返回一个空对象。
-
你设置过字符编码吗?您可以查看
Content-Length以确保您收到正确的请求。如果Content-Length有效,则可以从InputStream中读取指定长度。如果不是,请检查您的请求。 -
@GeminiKeith 谢谢!我对 HttpServletRequest 进行了更多研究,问题已解决(请参阅我的答案)。
标签: java spring curl binary-data