Manipulation HTTP ContentEncoding « dégonfler »
-
30-09-2019 - |
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
La solution Dans HTTP / 1.1, 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 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 . 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