2011-10-12 109 views
1

我需要获取原始服务器响应,标题。这也意味着gzip或缩小的内容仍应该被压缩。我不希望对收到的内容做任何更改。PHP - 获取原始服务器响应?

这可能与PHP?

我试着用卷曲,但似乎并不奏效,我设置这些零:

   CURLOPT_HTTP_CONTENT_DECODING => 0, 
      CURLOPT_HTTP_TRANSFER_DECODING => 0, 

但没有帮助。

我试过用fsockopen,但似乎也自动解压缩。

还有什么?

编辑:这些都是我的卷曲头:

$options = array(CURLOPT_URL => 'http://www.example.com/', 
      CURLOPT_CONNECTTIMEOUT => 20, 
      CURLOPT_HEADER => 1, 
      CURLOPT_RETURNTRANSFER => 1, 
      CURLOPT_FOLLOWLOCATION => 1, 
      CURLOPT_USERAGENT => $user_agent, 
      //CURLOPT_CUSTOMREQUEST => 'HEAD', 
      //CURLOPT_NOBODY => true, 
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
       //CURLOPT_HTTP_CONTENT_DECODING => 0, 
       //CURLOPT_HTTP_TRANSFER_DECODING => 0, 
      CURLOPT_BINARYTRANSFER => 1, 
      CURLOPT_HTTPHEADER => array('Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
             'Accept-Language' => 'en-us', 
             'Accept-Encoding' => 'gzip, deflate')); 

感谢。

回答

0

fsockopen不会自动解压缩,但是如果你在自己的HTTP客户端上运行,你必须告诉服务器你已经准备好接受一个gzip的响应,其他的服务器会向你发送一个未压缩的响应。

您可以在请求中加入Accept-Encoding表头,例如

Accept-Encoding: compress, gzip 
+0

谢谢,得到这个以防其他人感兴趣:http://be.php.net/manual/en/function.fsockopen.php#73581 – Wesley