Вопрос

какой Inputstream. Тип должен использоваться для обработки потоков URLConnection, которые имеют http Кодировка контента установлен в выпускать?

Для контента-кодирования GZIP или ZIP я использую gzipinputStream, без проблем.

Для кодирования контента «Deflate» я пытался использовать Инфицировать путать а также Deflaternputstream. Но я получаю

java.util.zip.zipException: Неизвестный метод сжатия на java.util.zip.inflaternputstream.read (inflaughtstream.java:147)

Мое понимание в том, что «деформировать» кодирование относится к Zlib сжатие, и в соответствии с документы Это должно быть обработано на блокировки.

Это было полезно?

Решение

В http / 1.1, Content-encoding: deflate на самом деле относится к алгоритму сжатия Devlate, как определено RFC 1951., завернутый в формат данных zlib, как определено RFC 1950..

Однако некоторые поставщики просто реализуют алгоритм деформирования в качестве определенного RFC 1951, полностью игнорируя RFC 1950 (NO ZLIB заголовков).

Другие были поражены такой же проблемой:

Для того, чтобы работать вокруг этого, попробуйте создать InflaterInputStream прохождение Inflater это было создано с nowrap Параметр установлен на true:

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

Другие советы

К сожалению, использование инфраструктурной мощности с объектом подразделения не всегда давали правильную декомпрессию. Мне пришлось обнаружить заголовки и рассказать подразделению, где было компенсирование полезной нагрузки.

http://thushw.blogspot.com/2014/05/decoding-html-pages-with-content.html.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top