Проблема с отправкой запроса в xmlsearch.yandex.ru

feaN0r

Новичок
Проблема с отправкой запроса в xmlsearch.yandex.ru

Привет программеры.
Заморочился вчера с одной траблой:

Отправляю в

<?xml version="1.0" encoding="windows-1251"?>
<request>
<query>"тест" &lt;&lt;
url="phpclub.ru*"</query>
<page>1</page>
</request>

через http://xml.yandex.ru/request_example.xml все прекрасно работает

Отправляю своим скриптом с помощью заголовков:

PHP:
$request = '<?xml version="1.0" encoding="windows-1251"?>
<request>
<query>"'.$search_string.'" &lt;&lt;
url="'.$host.'*"</query>
<page>'.$page_num.'</page>
</request>';

Пробывал отправлять в Юникоде
#$request = iconv("WINDOWS-1251", "UTF-8", $request);
#echo $request;

$requestHeader  = "POST /xmlsearch HTTP/1.0\r\n";
$requestHeader .= "Host: xmlsearch.yandex.ru\r\n";
$requestHeader .= "User-Agent:      Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
$requestHeader .= "Content-Type: text/xml\r\n";
$requestHeader .= "Content-Length: ".strlen($request)."\r\n";
$requestHeader .= "Connection: close\r\n\r\n";
$requestHeader .= urlencode($request);
Пишет "Задан пустой поисковый запрос"

Раз через интерфейс яши все работает, значит запрос правильный, а дело скорее всего в HTTP заголовках, только что с ними не так?

Код всего скрипта:

PHP:
<?php
ob_start();

////////////////////////////////////////
// Эта функция разбирает XML и формирует конечный HTML
function makeSearchList(&$out,&$dd){
    if($dd){
        $docs = $dd->get_elements_by_tagname('doc');
        if(!$docs){
            $out.= '<p>Искомая комбинация слов нигде не встречается</p>';
            return;
        }
        $counter = 1;
        foreach($docs as $de_doc){
            $titles = $de_doc->get_elements_by_tagname('title');
            $urls = $de_doc->get_elements_by_tagname('url');
            $passages = $de_doc->get_elements_by_tagname('passage');
            if(!$titles || !$urls || !$passages){
                continue;
                $out.= '<p>нет таких элементов</p>';
            }
            $out.= '
            <p>'.$counter++.'. <a href="'.$urls[0]->get_content().'">'.$titles[0]->get_content().'</a><br />'.$passages[0]->get_content().'</p>';
        }
    }
}
$search_string = htmlspecialchars($_POST['search_string']);
echo $search_string;

//номер страницы, в каждом ответе поумолчанию мне приходило по 10
//найденых страниц, здесь я так понял номер очередного десятка
$page_num = 1;
//адрес сайта на котором производим поиск
$host = 'www.phpclub.ru';
// XML запрос
$request = '<?xml version="1.0" encoding="windows-1251"?>
<request>
<query>"'.$search_string.'" &lt;&lt;
url="'.$host.'*"</query>
<page>'.$page_num.'</page>
</request>';

Пробывал отправлять в Юникоде
#$request = iconv("WINDOWS-1251", "UTF-8", $request);
#echo $request;

$requestHeader  = "POST /xmlsearch HTTP/1.0\r\n";
$requestHeader .= "Host: xmlsearch.yandex.ru\r\n";
$requestHeader .= "User-Agent:      Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
$requestHeader .= "Content-Type: text/xml\r\n";
$requestHeader .= "Content-Length: ".strlen($request)."\r\n";
$requestHeader .= "Connection: close\r\n\r\n";
$requestHeader .= urlencode($request);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://xmlsearch.yandex.ru/xmlsearch/');
curl_setopt($ch, CUTLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $requestHeader);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);

# Вот тут он мне всегда выдает xml документ что типа "Вы отправили пустой запрос"
echo $result;

$xml_respose = substr($xml_respose,strpos($xml_respose,'<?xml'));
  // Создаем DOM Document
  $dd = domxml_open_mem($xml_respose);
#}
//парсим запрос и делаем HTML
makeSearchList($out,$dd);

echo '<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Yandex XML</title>
</head>
<body>
<form action="" method="post">
<input name="search_string" type="text" value="'.htmlspecialchars($search_string).'" />
<input type="submit" />
</form>
'.$out.'
</body>
</html>';
?>
Спасибо.
 
Сверху