MultipartFormDataInput请求的内容长度始终为-1

时间:2014-09-04 21:01:20

标签: java rest resteasy multipartform-data

我正在使用RESTEasy通过键和值来输出一些数据。我只想接受小于4k的数据,我想通过获取请求的内容长度来检查。以下是与我合作的方法:

@PUT
@Path("/{key}")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response addData(
  final @PathParam("key") String dataKey,
  MultipartFormDataInput data) throws IOException, ClassNotFoundException {

  final HttpServletRequest request = ....getHttpRequest(); //returns the request

  final Map<String, List<InputPart>> parts = data.getFormDataMap();
  final List<InputPart> inputParts = parts.get("data");
  final InputPart part= inputParts.get(0);    
  final InputStream dataStream = part.getBody(InputStream.class, null);

  int length = request.getContentLength();
  String length2 = request.getHeader("Content-Length");
  System.out.println(length);
  System.out.println(length2);

  service.addData(key, dataStream);

  return Response.status(204).build();
}

但是,lengthlength2分别返回-1null。如果我监视Fiddler并查看请求,我会注意到请求中的contentLength不是-1,而是更正确的值。

有关为何我无法获取请求内容长度的任何想法?感谢。

编辑:我的PUT请求使用Advanced Rest Client Chrome扩展程序:http://i.imgur.com/aI6WNDy.png

编辑:不确定我还有很多其他内容可以添加,但对此的任何想法都会很棒。

1 个答案:

答案 0 :(得分:0)