我正在使用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();
}
但是,length
和length2
分别返回-1
和null
。如果我监视Fiddler并查看请求,我会注意到请求中的contentLength
不是-1
,而是更正确的值。
有关为何我无法获取请求内容长度的任何想法?感谢。
编辑:我的PUT请求使用Advanced Rest Client Chrome扩展程序:http://i.imgur.com/aI6WNDy.png
编辑:不确定我还有很多其他内容可以添加,但对此的任何想法都会很棒。
答案 0 :(得分:0)
查看@HeaderParam
是否适合您
http://www.mkyong.com/webservices/jax-rs/get-http-header-in-jax-rs/