2017-09-22 2 views
0

Obtenir HttpResponse message ContentLength comme:Http ContentLength est diifferent que la taille réelle du fichier

var contentLength = response.Content.Headers.ContentLength; 
Console.WriteLine(contentLength); 

XML Obtenir la longueur du fichier comme:

FileInfo f = new FileInfo(fileName); 
long filesize = f.Length; 

maintenant lors de l'impression à la fois la taille, il me donne un comme 3970 et autre comme 3968. Je veux comparer à la fois la taille mais à cause de cette différence, je ne parviens pas à le faire. De l'aide?

+0

Je dirais que ce pourrait être le Byte Order Mark mais qui est 3 octets non 2. – Lloyd

+0

Avez-vous essayé de faire un (automatisé) comparaison octet à octet de la réponse et du contenu du fichier pour voir où se trouve la différence? – Sefe

+0

@Lloyd La nomenclature est de 2 octets en UTF-16, 4 en UTF-32 et en 3 octets (cassés) UTF-8. Brisé, car UTF-8 n'a pas besoin de BOM (et en fait, il est interdit par le standard Unicode), mais certains éditeurs se sont trompés et maintenant c'est un standard de facto (cassé) –

Répondre

0

Vérifiez les 2 premiers octets du flux par rapport au fichier. UTF-16 a une nomenclature 2 octets, il est sans doute que:

http://www.opentag.com/xfaq_enc.htm#enc_default

First bytes  Encoding assumed 
----------------------------------------- 
EF BB BF   UTF-8 
FE FF    UTF-16 (big-endian) 
FF FE    UTF-16 (little-endian) 
00 00 FE FF  UTF-32 (big-endian) 
FF FE 00 00  UTF-32 (little-endian) 
None of the above UTF-8 
+0

C'est un encodage UTF-8. Y a-t-il un moyen d'éviter contentLength et d'utiliser autre chose parce que ContentLength est une définition de Headers et donc la réponse prend comme Header + content (2 octets supplémentaires) – ayushi

+0

Je pense qu'il y a une certaine confusion ici, Vous dites ContentLength est Headers + Content. Ce n'est pas vrai, il est défini comme suit: "Le champ d'en-tête d'entité Content-Length indique la taille du corps d'entité" C'est juste la taille du corps de la requête HTTP. Cela peut être mieux si vous pouvez publier les premiers (5) octets du fichier et du flux de réponse en tant que chaîne hexadécimale et tous les en-têtes de réponse pour le HTTP. – CamW

+0

fichier Hex contenu 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d227574662d3822207374616e64616c6f6e653d22796573223f3ea3c6665656420786d6c3a626173653d22687474703a2f2f6465762d73656c6563742d73657276696365732e79746e696f702e636f6d2f70726f6475637472656769737472792f7365617263682f2220786d6c6e733a643d22687474703 – ayushi