HTTP через сокеты
Код:
...
$fp = @fsockopen($host, $port, $errno, $errstr, $this->timeout);
fwrite($fp, $head);
$result = '';
while (!feof($fp)) $result .= fread($fp, 1024);
fclose($fp);
echo $result;
...
$fp = @fsockopen($host, $port, $errno, $errstr, $this->timeout);
fwrite($fp, $head);
$result = '';
while (!feof($fp)) $result .= fread($fp, 1024);
fclose($fp);
echo $result;
...
результат получается примерно такой
Код:
HTTP/1.1 200 OK
Date: Tue, 03 Oct 2006 13:16:28 GMT
Server: Apache/1.3.34 (Unix) PHP/5.1.2
X-Powered-By: PHP/5.1.2
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html
196
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<TITLE>CodeNet - Все для программиста!</TITLE>
<META NAME="keywords" CON............
190
льтры, плагины, написание плагинов, .....
192
ы, Фрактальные ландшафты,
Date: Tue, 03 Oct 2006 13:16:28 GMT
Server: Apache/1.3.34 (Unix) PHP/5.1.2
X-Powered-By: PHP/5.1.2
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html
196
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<TITLE>CodeNet - Все для программиста!</TITLE>
<META NAME="keywords" CON............
190
льтры, плагины, написание плагинов, .....
192
ы, Фрактальные ландшафты,
что это за 196,190,192 и т.д? Я так понимаю это размер пакетов. Как от них избавиться, чтобы выдавался просто HTML?
Сенкс
Это chunked encoding. Поменяй HTTP/1.1 на /1.0 в запросе. В 1.0 не поддерживался chunked encoding.
Но все же должно же быть какое-то средство. В мануле нашел http_checked_decode(), но юзать не пробовал. Собтвенно, нормально декодировать его можно, только получив его частями. Но как?