Разбор HTTP-запроса

imdem

Guest
Разбор HTTP-запроса

Есть два файлика - один генерирует http-запрос и методом post отсылает его второму, второй соотвественно должен принять его и разобрать.

текст первого


<?php
$fp = fsockopen ("xxx.xxx.ru", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br>\n";
} else {
$text='<?xml version="1.0"?><response><authentication><login>login</login><password>password</password></authentication><message> <transaction-id>123</transaction-id> <text>PRIVET!</text></message></response>\r\n';

fputs ($fp,"POST http://xxx.xxx.ru/2.php HTTP/1.0\r\n ");
fputs ($fp,"Host: xxx.xxx.ru\r\n");
fputs ($fp,"Referer: http://xxx.xxx.ru/3.php\r\n");
fputs ($fp,"Content-Type: application/x-www-form-urlencoded\r\n");
fputs ($fp,"Content-Length:".strlen($text)."\r\n");
fputs ($fp,"\r\n");
fputs ($fp,$text);


while (!feof($fp)) {
echo fgets ($fp,128);
}
fclose ($fp);
}
?>
хитрость в том что после заголовков через пустую строчку прилеплен некий текст( может быть достаточно большой) - причем он не оформлен как переменная - просто передается в теле запроса. Почему так - не псрашивайте. Данность)

Соответственно второй файлик должен этот запрос поймать и из тела запроса текст выудить. Был бы теккст оформлен как параметр - проблем нет - вынимаем...а так - никак не могу получить весь запрос целиком - только заголовки ...

сейчас файлик просто пишет чтото в некий тесктовый файл

<?php
if (!$handle = fopen ("temp.dat", "w")) echo 'Ошибка';
else
{
fputs($handle,???????????????);//вот тут надо вывести полученный от первого файла запрос в файл

}
fclose ($handle);
?>

обсмотрел все переменные $_server[...] - чет пусто(((
МОжет кто подскажет как?
 

neko

tеam neko
always_populate_raw_post_data стоит?

и может это все лучше делать через soap?
 

imdem

Guest
нашел, спасибо

$text=file_get_contents ('php://input');
fputs($handle,$text );


от ить изврат то)
 

Alexandre

PHPПенсионер
$HTTP_RAW_POST_DATA пусто потому-что
стоит
PHP:
fputs ($fp,"Content-Type: application/x-www-form-urlencoded\r\n");
поставь: Content-Type: text/xml и получишь свое тело в $HTTP_RAW_POST_DATA на блюдечке с голубой каемочкой.

использование SOAP - в данном случае скорее всего нецелесообразно, т.к. обращаются к уже разработанной (кем-то) системе .;)
 
Сверху