Pregunta

Lo que InputStream tipo se debe utilizar para los flujos URLConnection mango que tienen HTTP Content-Encoding en la posición desinflado

Para una Content-Encoding de gzip o zip utilizo un GZIPInputStream, no hay problema.

Para una Content-Encoding de "desinflado" He intentado usar InflaterInputStream y DeflaterInputStream pero me da

  

java.util.zip.ZipException: desconocido   método de compresión           en java.util.zip.InflaterInputStream.read (InflaterInputStream.java:147)

Mi entendimiento es que "deflate" encoding refiere a Zlib compresión, y de acuerdo con la docs esto debe ser manejado por InflaterInputStream.

¿Fue útil?

Solución

En HTTP / 1.1, Content-encoding: deflate en realidad se refiere al algoritmo de compresión deflate, como se define por RFC 1951 , envuelto en el formato de datos zlib, como se define por RFC 1950 .

Sin embargo, algunos vendedores simplemente implementan el algoritmo DESINFLE como se define RFC 1951, RFC 1950 ignorando por completo (sin cabeceras zlib).

Otros han visto afectados por el mismo problema:

A fin de evitar esto, tratar de una instancia del InflaterInputStream pasar una Inflater que se creó con el parámetro nowrap conjunto a true:

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

Otros consejos

Por desgracia, el uso de la InflaterInputStream con un objeto Inflater no siempre produce la descompresión correcta. Tenía para detectar los encabezados y decirle al Inflater donde el desplazamiento de la carga útil era.

http://thushw.blogspot.com/ 2014/05 / decodificación-páginas HTML-con-content.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top