【发布时间】:2012-02-12 07:54:13
【问题描述】:
我正在使用 php 的 file_get_contents() 函数来执行 HTTP 请求。为了节省带宽,我决定使用stream_context_create() 添加"Accept-Encoding: gzip" 标头。
显然,file_get_contents() 输出一个 gzip 编码的字符串,所以我使用 gzuncompress() 来解码编码的字符串,但我收到作为参数传递的数据的错误。
[...] PHP Warning: gzuncompress(): data error in /path/to/phpscript.php on line 26
我知道还有另一个函数可以解压缩 gzipped 数据gzdecode(),但它不包含在我的 PHP 版本中(也许它只在 SVN 上可用)。
我知道 cUrl 会即时解码 gzip 流(没有任何问题),但有人建议我使用 file_get_contents() 而不是 cUrl。
您知道在 PHP 中解压缩 gzip 数据的任何其他方法吗?或者为什么 gzuncompress() 会输出警告? gzuncompress() 没有按预期工作是荒谬的。
注意事项: 问题肯定与 PHP 有关:HTTP 请求是向 Tumblr API 发出的,该 API 给出了良好编码的响应。
【问题讨论】:
-
你知道他们为什么建议使用
file_get_contents而不是cUrl吗? -
不,我不知道,他们说“这样更好”。我可以回到 cUrl,但我还是对 gzuncompress() 问题感到好奇。
-
是不是因为数据也是base64编码的?
-
您确定
file_get_contents没有为您解压吗?这是一个很长的镜头,我知道...尝试转储文件的内容并检查文件开头的 gzip 幻数0x1f8b。 -
不,即使添加了 base64_decode() 我也会遇到同样的错误。
标签: php