我正在使用 Jersey,我需要计算多部分发布请求正文的 MD5 哈希。我当前的资源方法签名如下所示:
@POST
@Consumes("multipart/form-data")
@Produces("application/json")
public String post(
@FormDataParam("name") String name,
@FormDataParam("description") String description,
@FormDataParam("iconfile") FormDataBodyPart part,
@Context HttpServletRequest hsr) {
// ...
}
我没有找到获取原始请求正文的方法,我需要计算 MD5 哈希。当调用我的资源方法时,来自HttpServletRequest
( hsr.getInputStream()
) 的输入流已经被消耗,我无法再次读取它。
我尝试将我的方法签名更改为以下内容:
@POST
@Consumes("multipart/form-data")
@Produces("application/json")
public String test(byte[] bytes) {
// ...
}
通过这种方式,我获得了请求正文的原始字节,并且可以成功计算 MD5 哈希,但我不知道如何从那里处理多部分请求(拆分部分,获取每个部分等)。我是否必须自己处理原始请求?或者我可以让 Jersey 完成这项肮脏的工作并FormDataParam
为我提取 s 并让我以某种方式计算 MD5 散列吗?
谢谢,