0
我在Java中使用“HttpURLConnection
”与“Range
”属性来下载文件的一个片段,我设定的范围60000-560000
,我可以读500000
字节的数据,这是560000-60000
。但是当范围是0-60000
时,我可以读取60001个字节的数据,这不等于60000-0
。HttpURLConnection的Java的范围
为什么?有人可以给我一些解释吗?
我在Java中使用“HttpURLConnection
”与“Range
”属性来下载文件的一个片段,我设定的范围60000-560000
,我可以读500000
字节的数据,这是560000-60000
。但是当范围是0-60000
时,我可以读取60001个字节的数据,这不等于60000-0
。HttpURLConnection的Java的范围
为什么?有人可以给我一些解释吗?
这是正确的行为。范围的界限都是包容性的。从RFC 7233:
在一个字节范围规格的第一字节-POS值给出字节偏移的范围内的第一字节的 。 last-byte-pos值给出该范围中最后一个字节的 字节偏移量;也就是说,指定的位置是 是包含性的。字节偏移从零开始。
○第一500个字节(字节偏移0-499,包括端值)::字节范围说明符值的
实例
bytes=0-499
○第二500个字节(字节偏移500-999 ,包括):
bytes=500-999
它可能取决于服务器。不同的服务器以不同方式处理字节范围请求有些人根本不处理它们。 – ccleve 2011-06-10 02:04:01
您可以从响应中获取标题,让我们知道您正在使用哪个服务器。 – whatnick 2011-06-10 02:08:29
实际上,从规格的例子看,0-60000应该给你60001字节。您应该能够读取500,001字节与您的其他范围。所以你的问题实际上是倒置的。 – MJB 2011-06-10 03:35:51