【发布时间】:2011-03-28 01:26:15
【问题描述】:
我正在编写一个移动应用程序,但在从 Yahoo! 下载长文件时遇到了困难。定期(大约每三分钟)中止下载的服务器。移动应用程序通过相同的慢速数据连接成功地从其他服务器下载了冗长的文件。来自 Yahoo! 的 HTTP 标头转储服务器是
D/AsyncDownloadFile(694):标头字段:{p3p=[policyref="http://info.yahoo.co m/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi 我们的熟食店 SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA PO L HEA PRE LOC GOV"],内容类型=[应用程序/八位字节流],连接=[关闭] , last-modified=[Fri, 06 Aug 2010 14:47:50 GMT], content-length=[2000000], age=[ 0],服务器=[YTS/1.17.13],接受范围=[字节],日期=[星期六,2010 年 8 月 7 日 18:53:02 格林威治标准时间]}
这表明它定义了 connection=[close]。一个不同的(非 Yahoo!)服务器定义了 connection=[keep-alive] 并且我的移动应用程序成功地从它下载。所以我有几个问题:
是什么导致了 Yahoo!服务器定期中止下载?我可以做些什么来避免定期中止或我可以做些什么来恢复中止的下载?服务器定义connection=[close]时是否考虑字节范围的请求?
我读过的东西:
- description 的持久连接,
- description 字节范围请求
我尝试过的事情:
- 我尝试将 http 标头“Connection”字段设置为“keep-alive”,但 Yahoo!服务器响应是一个标头“连接”字段设置为“关闭”。
- 我已尝试按照this question 中的说明恢复连接。即使来自 Yahoo! 的 HTTP 标头服务器显示它支持字节范围请求并且内容范围响应显示正确(例如,内容范围=[字节 387924-1999999/2000000]),恢复的传输在文件开始时错误地恢复。我想知道这是否是由于 connection=[close] 设置造成的。
由于 HTTP 标头的主题对我来说相当新,因此欢迎对常见陷阱提出任何建议或警告。
[更新] 我收到了 Yahoo! 的回复技术支持说不支持字节范围:“Yahoo!Web Hosting 不支持 Accept-range 标头,因为我们使用服务器池并且每个请求都可能到达不同的服务器。您将在响应中看到 connection=[close]标题表明这一点。”剩下的问题是是否可以避免定期下载中止。 (我尝试请求 Connection="keep-alive" 但被忽略了。)
【问题讨论】:
-
您要访问的 URL 是什么?
-
URL 是eduneer.com/tangled/phenotypic/2010_03_3.dat 这是一个包含 500,000 个 4 字节整数的测试文件,从 0 开始递增。如果中止并恢复,下载的测试文件的十六进制转储显示 Yahoo!服务器在文件的开头重新启动,而不是在指定的字节范围内恢复。
-
我收到了来自 Yahoo! 的回复技术支持解释不接受字节范围请求:“Yahoo!虚拟主机不支持 Accept-range 标头,因为我们使用服务器池并且每个请求都可能到达不同的服务器。您将在表明这一点的响应标头。”
-
您应该将其作为答案发布并接受(一两天后)。
标签: http http-headers