Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Сеть > Fsockopen 302-й статус


Автор: gta4kv 24.11.2007, 23:01
Собственно сабж..

Сервер в ответ вместо 200-го отдает 302-й статус

Код

<?php

$fp = fsockopen('www.yandex.ru'    , 80, $errno, $errstr, 30);
if (!$fp) {
    
    echo "$errstr ($errno)<br />\n";
    
} else {
    
    $out = "GET /yandsearch?text=%E3%FB HTTP/1.1\r\n";
    $out .= "Host: www.yandex.ru\r\n";
    $out .= "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021204\r\n";
    $out .= "Referer: http://www.yandex.ru/\r\n";
    $out .= "Accept: text/xml,application/xml,application/xhtml+xml,";
    $out .= "Connection: Close\r\n\r\n";

    fwrite($fp, $out);
    
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}

exit;
?>


В ответ получаем:

Код

Found

The document has moved here.


Автор: teroni 24.11.2007, 23:28
Так устроен яндекс... Сразу гетом был запрошен http://www.yandex.ru/yandsearch?text=%E3%FB, в ответ сервер сделал 302 редирект на страницу http://www.yandex.ru/yandsearch?text=%E3%FB&lr=187.
Хотите увидеть, что на ней - сделайте из скрипта еще один запрос GET.

Автор: gta4kv 24.11.2007, 23:36
Цитата(teroni @ 24.11.2007,  23:28)
Так устроен яндекс... Сразу гетом был запрошен http://www.yandex.ru/yandsearch?text=%E3%FB, в ответ сервер сделал 302 редирект на страницу http://www.yandex.ru/yandsearch?text=%E3%FB&lr=187.
Хотите увидеть, что на ней - сделайте из скрипта еще один запрос GET.

Спасибо , большое !)

Автор: CyClon 28.11.2007, 09:25
Цитата
Сервер в ответ вместо 200-го отдает 302-й статус


Moved... Вытягиваем регуляркой из ответа сервера значение "Location" и делаем еще один запрос. Или же юзаем CURL (он сам может ходить по страничкам 302, пока не получит ответ 200 OK).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)