什么 Inputstream 类型应用于处理具有HTTP的URLConnection流 内容编码 设置 放气?

对于GZIP或ZIP的内容编码,我使用GZIPINPUTSTREAM,没问题。

对于“ Deflate”的内容编码,我尝试使用 AfteraterinputstreamDeflaterInputStream 但是我明白了

java.util.zip.zipexception:java.util.zip.inflaterinputstream.read(forteraterinputstream.java:147)的未知压缩方法

我的理解是,编码的“放气”是指 Zlib 压缩,并根据 文档 这应该由Afteraterinputstream来处理。

有帮助吗?

解决方案

在http/1.1中, Content-encoding: deflate 实际上是指下压缩算法,如 RFC 1951, ,以zlib数据格式包裹 RFC 1950.

但是,一些供应商只是将Deflate算法实现为定义的RFC 1951,完全忽略了RFC 1950(无ZLIB标头)。

其他人也受到同一问题的打击:

为了解决这个问题,请尝试实例化 InflaterInputStream 通过 Inflater 这是用 nowrap 参数设置为 true:

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

其他提示

不幸的是,将AlfterinputStream与Alterater对象一起使用并不总是会产生正确的减压。我必须检测到标题,并告诉膨胀者有效载荷的偏移量。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top