Question

Qu'est-ce que InputStream de type doit être utilisé pour gérer les flux de URLConnection qui ont HTTP Content-Encoding ensemble dégonfler ?

Pour un Content-Encoding de gzip ou zip-je utiliser un GZIPInputStream, pas de problème.

Pour un Content-Encoding de "dégonfler" J'ai essayé d'utiliser InflaterInputStream et DeflaterInputStream mais je reçois

  

java.util.zip.ZipException: inconnu   méthode de compression           à java.util.zip.InflaterInputStream.read (InflaterInputStream.java:147)

Je crois comprendre que "deflate" se réfère à un codage Zlib compression, et en fonction de la

Était-ce utile?

La solution

Dans HTTP / 1.1, Content-encoding: deflate fait référence à l'algorithme de compression deflate, tel que défini par , enveloppé dans le format de données zlib, tel que défini par .

Cependant, certains fournisseurs tout mettre en œuvre l'algorithme de DEFLATE comme RFC 1951 définie, RFC 1950 en ignorant complètement (sans en-tête de zlib).

D'autres ont été touchés par le même problème:

Pour contourner ce problème, essayez d'instancier le InflaterInputStream le passage d'un Inflater qui a été créé avec le paramètre nowrap ensemble à true:

in = new InflaterInputStream(conn.getInputStream()), new Inflater(true));

Autres conseils

Malheureusement, en utilisant le InflaterInputStream avec un objet Inflater ne produit pas toujours la décompression correcte. Je devais détecter les en-têtes et dire au Inflater où le décalage à la charge utile a été.

http://thushw.blogspot.com/ 2014/05 / décodage-html-pages avec-content.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top