Filedownloader: 下载过程中会出现 unexpected end of sream 错误,然后就暂停了

Created on 11 Jul 2017  ·  12Comments  ·  Source: lingochamp/FileDownloader

下载过程中会出现 unexpected end of sream 错误,然后就暂停了

question

Most helpful comment

原谅我来挖坟 这个问题还是没有得到解决。同一个链接有时成功有时不成功 分块的 contentlength是一致每次都一样。但是失败的时候最后一块的最后一个字节读不到。最后一块的分块的contentlength 是2704258成功的时候最后可以读到2704258不成功的时候最后只能读到 2704257

All 12 comments

image

@lizixian18 根据你的错误以及错误栈,我觉得你遇到的应该是这个问题: java.net.ProtocolException: unexpected end of stream..

原因

首先这个错误是HttpConneciton$FixedLengthSource抛出来的,原因是HttpConnection的输入流数据大小小于Response返回的content-length带回来的预期大小。

解决方案

这个是该资源的后端问题,联系你的后端同学,告诉他返回的数据流大小小于response中的content-length

如何绕过?

非常不建议绕过,因为content-length本身代表的就是要下载的的大小,如果绕过将无法保证本地文件是否是完整的,如果非要绕过,可以通过自己定制FileDownloadConnection来绕过。

嗯,是的,这原因我也有了解到了。

原谅我来挖坟 这个问题还是没有得到解决。同一个链接有时成功有时不成功 分块的 contentlength是一致每次都一样。但是失败的时候最后一块的最后一个字节读不到。最后一块的分块的contentlength 是2704258成功的时候最后可以读到2704258不成功的时候最后只能读到 2704257

当前使用的 FileDownloader 版本:1.7.6-SNAPSHOT
也遇到这个问题了,文件是存储在阿里云的 oss 服务器。请问如何解决呢?
image

你好,有一样的问题,,头部添加addHeader("Connection","close")并没有解决

当前使用的 FileDownloader 版本:1.7.6-SNAPSHOT
也遇到这个问题了,文件是存储在阿里云的 oss 服务器。请问如何解决呢?
image
我也遇到了这个问题,我也是用的FileDownloader1.7.6,只有两个文件会出现这个问题,别的都正常,请问解决了吗

@lizixian18 根据你的错误以及错误栈,我觉得你遇到的应该是这个问题: java.net.ProtocolException: unexpected end of stream..

原因

首先这个错误是HttpConneciton$FixedLengthSource抛出来的,原因是HttpConnection的输入流数据大小小于Response返回的content-length带回来的预期大小。

解决方案

这个是该资源的后端问题,联系你的后端同学,告诉他返回的数据流大小小于response中的content-length

如何绕过?

非常不建议绕过,因为content-length本身代表的就是要下载的的大小,如果绕过将无法保证本地文件是否是完整的,如果非要绕过,可以通过自己定制FileDownloadConnection来绕过。

但问题来了,我下载一个外链apk,比如这个:http://shouji.360tpcdn.com/190218/fa1166b847c6a94c14a83f5377b382cc/com.lu.weatherforecast_410.apk 真机8.1OK,第三方模拟器6.0 OK,浏览器OK, 但原生android 8.0模拟器一直报这个问题。

补充,用as的原生模拟器 的自带chrome浏览器在 http://app.so.com/上下载的所有apk都会出现问题。这应该是360搞的鬼吧。。

already fixed it, please add "Accept-Encoding", "identity" in header , then the encoding will not be modified.

@liqian685 @zhaochengjun 同样遇到这个问题,在某些机型复现概率很高,你们有解决吗?

already fixed it, please add "Accept-Encoding", "identity" in header , then the encoding will not be modified.

这个在哪里加,客户端下载时添加?还是让服务器添加?有没有具体的案例

我在客户端加了"Accept-Encoding", "identity"不起作用

Was this page helpful?
0 / 5 - 0 ratings