I am working with fsockopen (raw HTTP connections) and I made a chunked transfer encoding decoder.
Code: Select all
<?php
function transfer_encoding_chunked_decode($encoded)
{
$decoded = '';
while (!empty($encoded))
{
$explode = explode("\r\n",$encoded,2);
$counter = hexdec($explode[0]);
$decoded .= substr($explode[1],0,$counter);
$encoded = substr($explode[1],$counter,strlen($explode[1])-$counter);
}
return $decoded;
}
$fp = fsockopen("www.kaisellgren.name", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: http://www.kaisellgren.name\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$data = '';
while (!feof($fp)) {
$data .= fgets($fp, 128);
}
fclose($fp);
}
$parts = explode("\r\n\r\n",$data,2);
echo transfer_encoding_chunked_decode($parts[1]);
?>