【发布时间】:2015-10-15 01:46:13
【问题描述】:
在决定在这里问这个问题之前,我已经尝试了几种方法...我没有成功...我正在尝试从一个使用 gzip 的站点解码和读取数据。
我正在使用 cURL 和 PHP。当我尝试解码并打印结果时,我得到一长串乱码的特殊字符,例如:
JHWkdsU01EUXdWa1pXYTFOdFZsZFRiaz
VoVW14S2NGbFljRmRXYkdSWVpFZEdWRT
FYVWtoWmEyaExXVlpLTm1KR1VsWmlXR2
如果我运行下面的 PHP 脚本,我会收到如下错误:
PHP Warning: gzdecode(): data error in /var/www/mn.php on line 20
这是我当前的代码:
<?
$data_string = '9999';
$ch = curl_init('http://example.com/getN.php&keyword=');
curl_setopt( $ch, CURLOPT_USERAGENT, 'Darwin/15.0.0' );
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch,CURLOPT_ENCODING , 'gzip');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT,5);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded',
'Accept-Encoding: gzip, deflate',
'Content-Length: ' . strlen($data_string))
);
$result = gzdecode ( curl_exec($ch) );
curl_close($ch);
print_r($result);
?>
我也尝试通过以下方式启用deflate 模块:
a2enmod deflate
/etc/init.d/apache2 restart
并从php.ini启用zlib
要么我尝试直接测试它
curl -sH 'Accept-encoding: gzip' http://example.com/getN.php&keyword=9999 | gunzip -
我得到了同样的结果。
这是来自网站的信息:
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 15 Oct 2015 00:41:54 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Vary: Accept-Encoding
X-Powered-By: PHP/5.4.31
X-Frame-Options: SAMEORIGIN
Content-Encoding: gzip
请帮忙
【问题讨论】:
-
很难为您调试,因为来自 example.com 的实际数据似乎没有被压缩