当前位置: 首页 > 面试题库 >

处理HTTP ContentEncoding“放气”

丌官哲彦
2023-03-14
问题内容

应该使用哪种 InputStream 类型来处理将HTTP Content-Encoding 设置为 deflate的
URLConnection流?

对于gzip或zip的Content-Encoding,我使用GZIPInputStream,没问题。

对于“ deflate”的内容编码,我尝试使用 InflaterInputStreamDeflaterInputStream,
但我得到了

java.util.zip.ZipException:java.util.zip.InflaterInputStream.read(InflaterInputStream.java:147)处的未知压缩方法

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


问题答案:

在HTTP / 1.1中,Content-encoding: deflate实际上指的是DEFLATE压缩算法(如RFC
1951
所定义),该算法以zlib数据格式包装(如RFC
1950所定义)。

但是,某些供应商只是按照定义的RFC 1951实施DEFLATE算法,而完全忽略了RFC 1950(无zlib标头)。

其他人也遇到了同样的问题:

  • http://www.mail-archive.com/www-talk@w3.org/msg01000.html

为了解决此问题,请尝试实例化InflaterInputStream通过Inflaternowrap参数设置为所创建的true

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


 类似资料:
  • 我遵循这个链接的第二个答案(两个步骤)来实现视频到Youtube的上传:使用curl和api v3在Youtube上上传视频 代码工作正常,但当我执行时,我得到的响应是:状态:嵌入:true license:“YouTube”privacystatus:“unlisted”publicstatsviewable:true uploadstatus:“uploaded”

  • 在本节中,您将学习如何在Selenium WebDriver中执行像拖放这样的复杂操作。 在继续本节之前,先了解一些有关拖放操作的概念。 Selenium WebDriver拖放操作 要执行复杂的用户交互,例如拖放,在Selenium WebDriver中有一个类。 使用类,首先构建一系列复合事件,然后使用Action(一个代表单个用户交互的接口)执行它。 在这里使用的类的一些方法是 - - 单击

  • 我不知道如何使用hamcrest创建代码来检查数组内具有这些属性的数组。 (想象一下,因为它有多个具有不同数据的条目) 如果我使用这个: 它返回它确实存在,但我如何检查它找到的对象是否也具有相同的名字、姓氏和位置? 我也认为这是错误的: 我在这里理解的是,如果数组包含的mobilenum等于提供的mobillenum,并且如果数组包含名称“Allen”,它将搜索数组 我需要的是找到移动数等于“65

  • 本文向大家介绍Android 图片处理缩放功能,包括了Android 图片处理缩放功能的使用技巧和注意事项,需要的朋友参考一下 PS:在开发中我们会遇到一些图片处理问题,比如说缓存图片了、限制图片大小了、查看图片了等。上一篇文章介绍了图片的全景效果查看,今天介绍一个图片缩放,我们如果有时间的话,可以自己写一个属于自己的库,里面会用到view的按压、事件分发、手势等一些知识,如果没有时间或者不会其他

  • 调用.unsubscribe()将取消一个成员的回调监听Observable流。 当创建Observable时,您还可以返回自定义回调onUnsubscribe,当收听流的成员取消订阅时将调用该回调。 这对于必须实现的任何类型的清理都很有用。 如果我们没有清除setTimeout,那么值仍然会发射,但是没有人听。 为了节省资源,我们应该停止发射值。 一个重要的事情要注意的是,当您调用.unsubs

  • 1980年,英国BBC电视台策划了一系列关于计算机的电视节目。但导演发现一个问题:怎么给没见过电脑的观众画饼? 节目之一"Micro Live" 此时,大洋彼岸的苹果公司已经推出适于个人使用的微型电脑。Apple-II电脑在70年代末创造出销售神话,从而开发出个人电脑这个新市场。个人电脑在美国风靡,温吞吞的英国人节奏却慢了一拍。对于英国人来说,计算机还是限于科研、国防、制造领域的高科技设备,和自己