-
Notifications
You must be signed in to change notification settings - Fork 773
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Download resource which response dynamic but valid instance-length for each-block #31
Comments
我认真看了,和302无关,302无论是okhttp还是okdownload本身都有处理,那么问题出在哪里呢。 首先,你的这个问题与#17 也不一样,#17 中是因为我们给的 你的情况是,我们给了明确的
试探链接返回的数据总大小: 14545615 根据试探链接,我们去分块,最后一个分块是 导致最终,结束时,发现需要下载的大小,与后端给过来的大小不一致 并且我们还观察到你这个比较独特的,只有最后一个分块的区间大小发生了变化(分块0,分块1都是符合预期的,只有分块2不符合协议),前面的包括试探链接在内,显示的总大小都是 介于这种是非常明显的服务端错误,我这边其实验证下来这两个资源也是在很少的情况下会出现,出现的概率极低。(第一个链接资源就第一次验证的时候确实是出现,后续就没有出现过;第二个资源链接没有出现过类似的服务端错误问题。),如果你实在想要忽略这种服务端错误,将只要最后流拉取完成就当作正确完成下载,你需要解决以下两大问题: 这里有两个大的矛盾点:
第一个矛盾点,可以通过在 |
下面是一些链接,这是现在全球比较大的播客类RSS源。下载的过程中会遇到这类问题。 还有一个是。我下载的时候连着VPN。不知道VPN会不会影响 这块的数据? |
这个与VPN无关,我发现这些资源都有一个特点,就是每个链接返回的 如下,对该资源做1次试探链接,与3个分块链接返回的该资源的总大小都不同(分别是: 这个其实看来应该是 这种资源的特征就是如果你简单的发一个请求来下载,应该都是正常的。 为了保证okdownload更加可靠我会采用这个策略修复这个问题: 在单链接情况,如果试探链接与实际单块链接不一致,将会采用单块链接为主以继续正常下载。 在上面这个修复策略的基础上,以上资源都可以通过 |
Ok,非常感谢你抽空分析这类问题,无法断点续传没关系,只要可以正常下载就可以 。 |
该问题已经在 |
OK!非常感谢!我一会试下 |
有些服务器首次未返回Content-Range为空,也会导致的下载失败。如果Content-Range等于空,可以把instanceLength赋值为Content-Length,来打补丁。T_T T_T T_T T_T |
@yatounini 这样直接赋值 具体原因我在很多地方都有做过描述,比如这里就是一个案例。 大概原因首次试探连接采用 其次如果是 如果是希望直接通过一次 推荐解决方案
|
N多人提出content-length的问题,作者坚持遵循协议,但下载本身就是一件苦脏累的填坑运动,感谢作者及团队的辛劳;考虑实际情况,range:0-0很多后台下载服务可能都不被考虑的,反倒HEAD更常见,尤其比较早些的网站,国内外皆如此。 |
1.0.5 还是有这个问题啊 |
我之前浏览了历史issues,发现也有相关的问题:#17 (comment) 我不知道跟我遇到的问题是否相似?我尝试使用最新的1.0.1的SNAPSHOT还是会遇到这个问题,
这是我创建task的代码(kotlin)的
我使用的是下面这些下载链接,而且还有很多。
https://play.podtrac.com/npr-510318/npr.mc.tritondigital.com/NPR_510318/media/anon.npr-mp3/npr/upfirst/2018/04/20180406_upfirst_upfirstfacebookspecial.mp3?orgId=1&d=893&p=510318&story=600081084&t=podcast&e=600081084&ft=pod&f=510318
https://play.podtrac.com/npr-510318/npr.mc.tritondigital.com/NPR_510318/media/anon.npr-mp3/npr/upfirst/2018/03/20180329_upfirst_180329upfirst.mp3?orgId=1&d=803&p=510318&story=597870311&t=podcast&e=597870311&ft=pod&f=510318
我们做的是一款播客类的APP,会遇到各国的播客源,而且各个播客类的APP都是相同的源,所以如果别的APP是可以下载的,不应该我们这边的不能下,其实到也不是不能下,主要就是会很容易出现下面的错误
而且我发现,我之前使用FileDownloader-1.4.X的版本是不会遇到这类问题的,直到升到最新的FileDownloader后发现该问题出现非常多lingochamp/FileDownloader#974 ,而且在FileDownloader的ISSUES列表里也有很多用户遇到这个问题,我也照着FileDownloader的方法进行设置了:
但针对上面的进行设置后,FileDownloader-1.5.+版本还是会有问题!!!
后来我看到lingochamp/FileDownloader#990 (comment) 你说在OkDownload中解决了该问题.
然后尝试使用OkDownload,但是问题好像还是存在。
我截了个LOG:
刚才用Charles截了一段HTTP的数据,不知道可以不可以给你一些线索
是一个302的地址转移,但是我用的是OKHTTP,应该当是可以自己处理302的问题的
之后我又在FileDownloader-1.4.3的版本中我又尝试下了同一个链接,正常的,试了10来次都是正常的,但是1.4.3的版本好像对okcat支持的不是很好,所以没有捉到什么有用的LOG:
之前我已经了解过你写的 TCP 窗口的文章
@Jacksgong
The text was updated successfully, but these errors were encountered: