确定HTTP响应的大小?

Big*_*c66 4 java io httpresponse

有没有办法确定HTTPServletResponse内容的大小?我读了这个get-size-of-http-response-in-java问题,但遗憾的是我工作的地方我无法访问CommonsIO :(

响应内容由单个复杂对象组成,因此我考虑将其写入临时文件,然后检查该文件.当应用程序在生产中运行时,这不是我想要做的诊断,但是如果可能的话就想避免它.

PS我读了erickson的答案但它提到了输入流我想知道正在写出的对象的大小...如果writeObject()方法返回一个代表字节而不是void... 的数字,那将是非常好的

Raf*_*cci 11

如果您有权访问响应标头,则可以阅读Content-Length.

以下是响应标头的示例:

(Status-Line):HTTP/1.1 200 OK
Connection:Keep-Alive
Date:Fri, 25 Mar 2011 16:26:56 GMT
Content-Length:728
Run Code Online (Sandbox Code Playgroud)

检查一下:标题字段定义

  • 注意:如果`Transfer-Encoding:chunked`,则不存在. (7认同)

Big*_*c66 0

我最终找到了一种获得我想要的东西的方法:

URLConnection con = servletURL.openConnection();
BufferedInputStream bif = new BufferedInputStream(con.getInputStream());
ObjectInputStream input = new ObjectInputStream(bif);
int avail = bif.available();

System.out.println("Response content size = " + avail);
Run Code Online (Sandbox Code Playgroud)

这使我能够看到客户端上的响应大小。我仍然想在发送之前知道服务器端的内容,但这是下一个最好的事情。