
Код
<?php
$hostname="xmlsearch.yandex.ru";
$path="/xmlsearch/";
$fp=fsockopen($hostname,80,$errno,$errstr,30);
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
$data='<?xml version="1.0" encoding="windows-1251"?>'."\r\n";
$data.="<request>\r\n";
$data.="<query>yandex</query>\r\n";
$data.="<groupings>\r\n";
$data.="<groupby attr=\"d\" mode=\"deep\" groups-on-page=\"10\" docs-in-group=\"1\" />\r\n";
$data.="</groupings>\r\n";
$data.="</request>\r\n";
$headers="POST $path HTTP/1.1\r\n";
$headers.="Host: $hostname\r\n";
$headers.="Content-type: text/html;charset=utf-8\r\n";
$headers.="Content-length: ".strlen($data)."\r\n\r\n";
fwrite($fp, $headers.$data);
$txt='';
while(!feof($fp))
{
$line=fgets($fp,1024);
$txt.=$line;
}
fclose($fp);
}
$pos=strpos($txt,"\r\n\r\n");
$header_out=substr($txt,0,$pos);
$txt_out=substr($txt,$pos);
header($header_out);
header("Content-type: text/xml;charset=utf-8");
$txt_out=substr($txt_out,strpos($txt_out,'<?xml'));
echo $txt_out;
?>
$hostname="xmlsearch.yandex.ru";
$path="/xmlsearch/";
$fp=fsockopen($hostname,80,$errno,$errstr,30);
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
$data='<?xml version="1.0" encoding="windows-1251"?>'."\r\n";
$data.="<request>\r\n";
$data.="<query>yandex</query>\r\n";
$data.="<groupings>\r\n";
$data.="<groupby attr=\"d\" mode=\"deep\" groups-on-page=\"10\" docs-in-group=\"1\" />\r\n";
$data.="</groupings>\r\n";
$data.="</request>\r\n";
$headers="POST $path HTTP/1.1\r\n";
$headers.="Host: $hostname\r\n";
$headers.="Content-type: text/html;charset=utf-8\r\n";
$headers.="Content-length: ".strlen($data)."\r\n\r\n";
fwrite($fp, $headers.$data);
$txt='';
while(!feof($fp))
{
$line=fgets($fp,1024);
$txt.=$line;
}
fclose($fp);
}
$pos=strpos($txt,"\r\n\r\n");
$header_out=substr($txt,0,$pos);
$txt_out=substr($txt,$pos);
header($header_out);
header("Content-type: text/xml;charset=utf-8");
$txt_out=substr($txt_out,strpos($txt_out,'<?xml'));
echo $txt_out;
?>
В ответ приходит вроде как xml-ник, но местами встречаются какие-то непонятные цифры и буквы

Что может быть?
Спустя 30 минут, 6 секунд (29.10.2007 - 16:37) vasa_c написал(а):
Во-первых, используйте HTTP/1.0, потому что в 1.1 сервер может использовать chunked-кодирование, 100-е ответы и еще много интересных вещей, которые вам ни к чему.
Во-вторых, разберитесь с кодировками. То 1251 у вас, то utf.
В-третих, вы уверены что в ответе перенос строки именно "\r\n", а не просто "\n", например.
В-четвертых, в запросе в content-type не нужен text/html (тем более у вас xml), а для POST-данных нужно - "application/x-www-form-urlencoded"
Во-вторых, разберитесь с кодировками. То 1251 у вас, то utf.
В-третих, вы уверены что в ответе перенос строки именно "\r\n", а не просто "\n", например.
В-четвертых, в запросе в content-type не нужен text/html (тем более у вас xml), а для POST-данных нужно - "application/x-www-form-urlencoded"
Спустя 25 минут, 20 секунд (29.10.2007 - 17:02) pavel написал(а):
Цитата(vasa_c @ 29.10.2007, 16:37) [snapback]28692[/snapback]
Во-первых, используйте HTTP/1.0, потому что в 1.1 сервер может использовать chunked-кодирование, 100-е ответы и еще много интересных вещей, которые вам ни к чему.
Во-вторых, разберитесь с кодировками. То 1251 у вас, то utf.
В-третих, вы уверены что в ответе перенос строки именно "\r\n", а не просто "\n", например.
В-четвертых, в запросе в content-type не нужен text/html (тем более у вас xml), а для POST-данных нужно - "application/x-www-form-urlencoded"
Во-вторых, разберитесь с кодировками. То 1251 у вас, то utf.
В-третих, вы уверены что в ответе перенос строки именно "\r\n", а не просто "\n", например.
В-четвертых, в запросе в content-type не нужен text/html (тем более у вас xml), а для POST-данных нужно - "application/x-www-form-urlencoded"
Спасибо.

_____________