with make example ejecutar dentro con php curl gzip gunzip

make - php curl string



Descomprime un archivo gzip de CURL, en php (7)

¿Has intentado configurar el encabezado indicando que aceptas la codificación gzip de la siguiente manera ?:

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

¿Alguien sabe cómo descomprimir los contenidos de un archivo gzip que obtuve con Curl?

por ejemplo: http://torcache.com/torrent/63ABC1435AA5CD48DCD866C6F7D5E80766034391.torrent

respondido

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

luego, el gzip comprimido

probé gzdecode pero no funciona, gleeflate también no simplemente no recibe ninguna respuesta, y el contenido de los archivos no son más que 2k


¿Has probado gzuncompress o gzinflate ?

gzdeflate comprime , lo contrario de lo que quieres. Para ser sincero, no puedo entender cómo gzdecode difiere de la descompresión normal.

También está la opción cURL CURLOPT_ENCODING :

El contenido del encabezado "Accept-Encoding:". Esto permite la decodificación de la respuesta. Las codificaciones compatibles son "identidad", "desinflar" y "gzip". Si se establece una cadena vacía, "", se envía un encabezado que contiene todos los tipos de codificación admitidos.

Parece que significa que descomprimirá automáticamente la respuesta, pero no lo he probado.


Con un contenedor zlib Stream:

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


Puedes hacerlo con gzinflate (simulando que $ headers contiene todos tus encabezados HTTP, y $ buffer contiene tus datos):

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; } }


Solo dile a cURL que decodifique la respuesta automáticamente cada vez que se gzipee

curl_setopt($ch,CURLOPT_ENCODING, '''');


Use gzdecode :

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

da

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