Кто-либо знает, как распаковать содержание gzip файла, который я получил с завихрением?
например: http://torcache.com/torrent/63ABC1435AA5CD48DCD866C6F7D5E80766034391.torrent
ответивший
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 09 Jun 2010 01:11:26 GMT
Content-Type: application/x-bittorrent
Content-Length: 52712
Last-Modified: Tue, 08 Jun 2010 15:09:58 GMT
Connection: keep-alive
Expires: Fri, 09 Jul 2010 01:11:26 GMT
Cache-Control: max-age=2592000
Content-Encoding: gzip
Accept-Ranges: bytes
затем сжатый gzip,
я попробовал gzdecode, но не работаю, gzeflate также не делает они просто не получают ответа, и содержание файлов не больше, чем 2k
Use gzdecode
:
<?php
$c = file_get_contents("http://torcache.com/" .
"torrent/63ABC1435AA5CD48DCD866C6F7D5E80766034391.torrent");
echo gzdecode($c);
gives
d8:announce42:http://tracker.openbittorrent.com/announce13:announce-listll42 ...
Вы пробовали gzuncompress
или gzinflate
?
gzdeflate
сжимает, противоположное тому, что вы хотите. Честно говоря, я не могу понять, чем gzdecode
отличается от обычного распаковщика.
Есть также опция cURL CURLOPT_ENCODING
:
Содержимое заголовка "Accept-Encoding: " заголовка. Это позволяет декодировать ответ. Поддерживаемые кодировки: "identity", "deflate" и "gzip". Если задана пустая строка "", отправляется заголовок, содержащий все поддерживаемые типы кодировок.
Похоже, это означает, что ответ будет автоматически распаковываться, но я этого не проверял.
Пробовали ли вы установить заголовок, указывающий, что вы принимаете gzip-кодирование следующим образом?:
curl_setopt($rCurl, CURLOPT_HTTPHEADER, array('Accept-Encoding: gzip,deflate'));
libcurl предлагает функцию, которая позволяет автоматически распаковывать содержимое (если он собран с zlib).
См. опцию CURLOPT_ENCODING: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTENCODING
Просто скажите cURL, чтобы ответ автоматически декодировался всякий раз, когда он архивируется с помощью gzip
curl_setopt($ch,CURLOPT_ENCODING, '');