okhttp response.body().contentLength()=-1

编程知识 更新时间:2023-04-05 06:03:59

问题:

在使用okhttp下载文件的时候拿到的文件长度为-1

解决思路

1.看服务器返回的请求头是否含有Content-Length

cmd 打开命令窗口输入 curl -i +下载链接

窗口显示 connect-length 是有数值的

2.看返回的content-type 

content-type类型 https://www.runoob/http/http-content-type.html

第一个返回  text/plain; charset=utf-8 表示文本类型

第二个返回 application/octet-stream表示二进制数据库一般表示文件,第二个是可以可以拿到长度的

3.看自己代码中返回的请求头

chuncked 参考

 https://zhuanlan.zhihu/p/65816404

http://www.eit.name/blog/read.php?515

发现能显示的请求头里有Content-Length而不能显示长度的请求头里有没有content-type且多了Transfer-Encoding:chunked,在chuncked模式下是没有Content-Length的。

4.发现了问题 告知服务端,然后继续寻找解决办法,发现https://blog.csdn/z_sawyer/article/details/78668790在头部增加

addHeader("Accept-Encoding","identity")可以拿到Content-Length。identity表示不对内容编码,自然也不会采用chuncked模式。编码类型参考http://www.helpsd/library/networking/http/http-content-encoding/22 但是没有chuncked可能内容太老了。

 

更多推荐

okhttp response.body().contentLength()=-1

本文发布于:2023-04-05 06:03:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/acfccc2d473cad2aec6a612c844d486f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:response   okhttp   contentLength   body

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 45166文章数
  • 14阅读数
  • 0评论数