2011-06-10 3 views
0

J'utilise « HttpURLConnection » en Java avec le « Range » propriété pour télécharger un segment d'un fichier, i définir la plage 60000-560000, et je peux lire les données 500000 octets, qui est 560000-60000. Mais lorsque la plage est 0-60000, je peux lire 60001 octets de données, ce qui n'est pas égal à 60000-0.HttpURLConnection gamme java

Pourquoi? Quelqu'un peut-il me donner une explication?

+1

Il peut dépendre du serveur. Les différents serveurs gèrent différemment les demandes de plage d'octets. Certains ne le manipulent pas du tout. – ccleve

+0

Pouvez-vous saisir l'en-tête de la réponse pour nous donner une idée du serveur que vous utilisez. – whatnick

+2

En fait, en regardant les exemples de la spécification, le 0-60000 DEVRAIT vous donner 60001 octets. Vous devriez être capable de lire 500 001 octets avec votre autre gamme. Vos problèmes sont donc inversés. – MJB

Répondre

0

Ce comportement est correct. Les deux limites de la gamme sont inclusives. De RFC 7233:

La valeur du premier octet pos dans un octet-range-spec donne le octet de décalage du premier octet dans l'intervalle. La valeur last-byte-pos donne le décalage octet du dernier octet de la plage; c'est-à-dire que l'octet positions spécifiées est inclusif. Les décalages d'octets commencent à zéro.

Des exemples de valeurs octet-gammes spécificateur:

o Les 500 premiers octets (décalages d'octets 0-499, inclus):

bytes=0-499 

o Les deuxièmes 500 octets (décalages d'octets 500-999 , y compris):

bytes=500-999 
Questions connexes