你避开的问题有一天还会回来找你

来源:互联网 发布:常熟淘宝培 编辑:程序博客网 时间:2024/04/29 00:29

前段时间朋友问我一个问题,HttpURLConnection.getContentLength()返回值总是-1,我当时没有详细想。

最近在做下载,发现回调时的total总是-1,后来上网查了查,网上结果如下:

在默认情况下,HttpURLConnection 使用 gzip方式获取,文件 getContentLength() 这个方法,每次read完成后可以获得,当前已经传送了多少数据,而不能用这个方法获取需要传送多少字节的内容。要取得长度则,要求http请求不要gzip压缩。
conn .setRequestProperty(“Accept-Encoding”, “identity”);

我加上之后,发现还是不行,后来抓了下包,发现服务端在返回http协议的header是未加上content-length属性,所以自然是取不到长度。后来和服务端商量了一下才解决掉这个问题。前后花了1个多小时。

最大的感受是,你避开的问题当下避开了,但是有一天它还会回来找你,并且会酝酿成为一个非常紧急急迫的问题。遇到问题,不要避开,去解决它。每一个问题解决的背后都是你核心竞争力的积累和提升。

参考资料

下载网络文件HttpURLConnection.getContentLength()大小为 -1
https://my.oschina.net/u/133352/blog/96582

0 0