Frage

Wer weiß, wie die Inhalte einer gzip Datei zu dekomprimieren, dass ich mit curl bekam?

zum Beispiel: http://torcache.com/torrent/63ABC1435AA5CD48DCD866C6F7D5E80766034391.torrent

reagiert

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

dann das komprimierte gzip,

habe ich versucht gzdecode aber nicht funktioniert, gzeflate auch nicht, dass sie einfach nicht bekommen keine Antwort, und der Inhalt der Dateien nicht mehr als 2k

War es hilfreich?

Lösung

Verwenden Sie gzdecode :

<?php
    $c = file_get_contents("http://torcache.com/" .
        "torrent/63ABC1435AA5CD48DCD866C6F7D5E80766034391.torrent");
    echo gzdecode($c);

gibt

d8:announce42:http://tracker.openbittorrent.com/announce13:announce-listll42
...

Andere Tipps

Just cURL sagen, die Antwort automatisch zu entschlüsseln, wann immer es ist gzipped

curl_setopt($ch,CURLOPT_ENCODING, '');

Libcurl bietet eine Funktion, die es dekomprimiert den Inhalt automatisch macht (wenn mit zlib gebaut).

Sehen Sie die CURLOPT_ENCODING Option: http://curl.haxx.se/libcurl /c/curl_easy_setopt.html#CURLOPTENCODING

Haben Sie versucht, den Header Einstellung besagt, dass Sie codieren, akzeptieren gzip wie folgt:

curl_setopt($rCurl, CURLOPT_HTTPHEADER, array('Accept-Encoding: gzip,deflate'));

Mit einem zlib Stream-Wrapper:

file_get_contents("compress.zlib://http://torcache.com/" .
    "torrent/63ABC1435AA5CD48DCD866C6F7D5E80766034391.torrent");

Haben Sie versucht, gzuncompress oder gzinflate ?

gzdeflate Kompressen , das Gegenteil von dem, was Sie wollen. Um ehrlich zu sein, ich kann nicht herausfinden, wie gzdecode unterscheidet sich von normalen Dekomprimieren.

Es gibt auch die Option cURL CURLOPT_ENCODING :

  

Der Inhalt des "Accept-Encoding:" Header. Dies ermöglicht Dekodierung der Antwort. Unterstützte Kodierungen sind "Identität", "deflate" und "gzip". Wenn ein leerer String, „“, gesetzt wird, ein Header alle unterstützten Codierungstypen enthält, wird gesendet.

Es scheint, es zu verstehen, wird automatisch die Antwort dekomprimieren, aber ich habe nicht getestet, dass.

Sie können es mit gzinflate (vorgeben, dass $ Header enthält alle HTTP-Header, und $ Puffer enthält Daten):

if (isset($headers['Content-Encoding']) && ($headers['Content-Encoding'] === 'gzip' || $headers['Content-Encoding'] === 'deflate'))
    {
        if ($headers['Content-Encoding'] === 'gzip')
        {
            $buffer = substr($buffer, 10);
        }
        $contents = @gzinflate($buffer);
        if ($contents === false)
        {
            return false;
        }
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top