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

解压缩gzip压缩的HTTP响应

慎弘化
2023-03-14
问题内容

我正在使用php的file_get_contents()功能来执行HTTP请求。为了节省带宽,我决定使用添加"Accept-Encoding: gzip"标题stream_context_create()

显然,file_get_contents()输出一个gzip编码的字符串,所以我gzuncompress()用来解码该编码的字符串,但是将作为参数传递的数据出错。

[...] PHP Warning: gzuncompress(): data error in /path/to/phpscript.php on line 26

我知道还有另一个功能可以解压缩压缩后的数据,gzdecode()但是它不包含在我的PHP版本中(也许仅在SVN上可用)。

我知道cUrl可以即时解码gzip流(没有任何问题),但是有人建议我使用它file_get_contents()而不是cUrl。

您是否知道以其他方式解压缩PHP中压缩的数据,或为什么gzuncompress()输出警告?荒谬的是gzuncompress()没有按预期工作。

注意:问题当然与PHP有关:HTTP请求是对Tumblr API发出的,它给出了编码正确的响应。


问题答案:

gzuncompress不适用于gzip编码。这是.Z档案的解压缩功能。

手册列出了缺少的gzdecode()#82930的一些解决方法,或者仅使用from中的一种upgradephp或gzopen temp文件的解决方法。

另一种选择是强制deflate使用Accept- Encoding:标头进行编码,然后gzinflate()用于解压缩。



 类似资料:
  • 问题内容: 我是新手。但是我正在玩REST Api。我无法从json.marshal中获得与json.Encoder相同的行为,我有两个函数 我想使用此功能gzip我的答复: 但是此函数返回以下内容: 这是go函数: 但是当我取消评论时: 它工作正常。 问题答案: 您需要先刷新或关闭gzip编写器,然后再访问基础字节,例如 否则,不会收集gzip编写器中已缓冲但尚未写到最终流中的内容。

  • 我想在JavaScript中做解压缩图像。我已经用C#使用gzip压缩了图像。如何在JavaScript中解压缩gzipped数据? C#代码

  • 使用的字符串: string='hello'+'\r\n'+'world' Java中的预期输出: out.getValue() f.write(Base64.b64Encode(Out.getValue())) F.Close() ByteArrayInputStream(压缩)); InputStreamReader(gis,“UTF-8”));

  • 问题内容: 我有一个用rails编写的api,它在每个请求上均以JSON响应进行响应。 响应可能很大,因此我需要使用gzip压缩JSON响应。 想知道如何在Rails控制器中执行此操作? 我加了线 在config.ru中 我还应该在呈现JSON的行中更改某些内容吗? 另外,我如何检查响应是否为gzip格式。 我从终端发出了curl请求,我只看到普通的普通JSON。 问题答案: 对于以gzip格式的

  • 我想在java中解压缩一个字符串,它在Python中被gzip压缩。 这是Java中的解压缩代码: }

  • 问题内容: 我有一个内存和磁盘受限的环境,我需要解压缩以字符串为基础的块(通过xmlrpc二进制传输)发送给我的gzip文件的内容。但是,使用zlib.decompress()或zlib.decompressobj()/ decompress()都可以在gzip标头上使用barf。我已经尝试过偏移gzip标头(在此处记录),但是仍然没有避免使用barf。gzip库本身似乎仅支持从文件解压缩。 以下