有没有一种方法可以传递——压缩成PHP';s curl_setopt()?

有没有一种方法可以传递——压缩成PHP';s curl_setopt()?,php,curl,Php,Curl,当使用curl时,我发现所访问的服务器上的行为有所不同,这取决于我是否将--compressed作为参数传递 我已经将Accept Encoding标头设置为gzip、deflate、sdch: curl_setopt( $ch, CURLOPT_ENCODING, 'gzip,deflate,sdch' ); 我还尝试将编码设置为空字符串:“”,因为这可能意味着支持任何类型的压缩 但是,如果我通过命令行传递了--compressed,那么返回的内容类型是:gzip。如果我没有传入--

当使用curl时,我发现所访问的服务器上的行为有所不同,这取决于我是否将
--compressed
作为参数传递

我已经将Accept Encoding标头设置为gzip、deflate、sdch:

    curl_setopt( $ch, CURLOPT_ENCODING, 'gzip,deflate,sdch' );
我还尝试将编码设置为空字符串:“”,因为这可能意味着支持任何类型的压缩

但是,如果我通过命令行传递了
--compressed
,那么返回的内容类型是:
gzip
。如果我没有传入
--compressed
,我返回的内容类型是
text/html;字符集=UTF-8

使用PHP的
curl\u exec()
,我似乎无法让它返回一个内容类型:gzip

=====

让我澄清一下我想要实现的目标。当我运行以下命令时:
curl-Ihttp://someserver.com --压缩的
获取我的内容类型:
gzip

运行相同的命令
curl-Ihttp://someserver.com
没有
——压缩的
得到我
内容类型:
text/html;字符集=UTF-8

尝试在PHP中执行此操作:

$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, "http://someserver.com" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );

// I've tried excluding this line, setting it to gzip, and empty string
curl_setopt( $ch, CURLOPT_ENCODING, '' ); 
curl_setopt( $ch, CURLOPT_HEADER, 1);

curl_exec( $ch ) );
$content_type = curl_getinfo( $ch, CURLINFO_CONTENT_TYPE );

无论我尝试什么,我都会得到$content-type=
text/html;charset=UTF-8
和not
gzip

删除
CURLOPT\u编码
选项(因此curl不会自动解码)并手动将
接受编码
选项放在标题中应该可以做到以下几点:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Encoding: gzip, deflate',
    'Connection: Close'
));

并不是世界上所有的服务都提供压缩内容作为响应。通过选项
CURLOPT_ENCODING
,您只能从服务器请求压缩内容。但若服务器并没有实现该机制,它将返回纯html。你可以尝试其他随机网站,提供压缩内容。例如youtube.com(可能)。

我已经尝试使用空字符串作为编码(正如我在原始帖子中提到的),但是curl_getinfo仍然显示
text/html;charset=UTF-8
作为内容类型。Curl会自动解压缩响应。是的,我在浏览了他们的文档后找到了这一部分,但通过省略CURLOPT_编码,您也告诉服务器不要压缩响应。我发现了这一点,并且能够看到压缩响应,但这不是我的目标:您是否考虑过使用系统调用,这样您就不会使用包装器,而是使用curl本身?下一步我们将尝试这样做,因为我知道运行curl命令是可行的,但我想看看是否有可能通过PHP实现。我实际上正在对同一台服务器进行测试,不仅仅是任何服务器。如果我的somerandomserver.com造成任何混乱,我深表歉意。我理解。。。但是仍然要为任何其他站点尝试相同的代码,并检查它们是否返回所需的输出。。。如果是,这是服务器的问题,而不是curl的问题。
Content-Type
标题绝对没有问题。在我看来,您实际上对
内容编码
标题感兴趣(对于
内容编码:gzip
)。