2011-10-12 108 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