我想知道响应某个http请求发送了多少数据。我现在做的是:
HttpURLConnection con = (HttpURLConnection) feedurl.openConnection();
//检查content size int feedsize=con.getcontentlength()的响应;
问题是,内容长度并不总是固定的。e、 当服务器使用transfer encoding=chunked时,我得到一个值-1。
我不需要这个来显示进度信息。我只需要知道数据的大小,是发送给我后,它已经完成。
背景:我需要这些信息,因为我想将其与使用gzip编码发送的响应的大小进行比较。
2条答案
按热度按时间30byixjq1#
你可以延长
FilterInputStream
,重写read()
,read(byte[],int,int)
,和skip
方法,以便在调用super
窗体中,它们用读取的字节数更新计数器。然后 Package
URLConnection
并使用 Package 器代替原始流。完成后,可以查询 Package 器的计数器。其他(“手动”)方法是使用yslow这样的工具在浏览器中收集统计数据,或者wireshark检查网络上的流量。
goucqfw62#
我会使用一个commons io countinginputstream,它可以帮你完成这项工作。一个完整但微不足道的例子: