Проблема с fsockopen

stas52

Новичок
Проблема с fsockopen

Помогите пожалуйста разобраться в чем проблема.
Следующий код выводит на экран нолик в скобчках. Я расчитывал получить немного больше.
Где ошибка?
Буду очень благодрен.

PHP:
$fp = fsockopen("novatours.lv/xml/excel_ru.php", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: novatours.lv/xml/excel_ru.php\r\n";
    $out .= "Connection: Close\r\n\r\n";

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

ys

отодвинутый новичок
>Где ошибка?
В голове.
fsockopen открывает "соединение" (сокет), а не файл. курить до тоберкулеза:

http://ru.php.net/manual/ru/function.fsockopen.php
 

berkut

Новичок
мля, да я тупой по жизни, ещё и отпуск... я уже и сам себя боюсь
 

Sepuka

Новичок
бывает что приходит код 400, т.к. синтаксическая ошибка. Например, $headers = 'GET /wiki/Http HTTP/1.0\r\n';
у хоста ru.wikipedia.org Кому не лень сами попробуйте получить с википедии страницу, а то все остальные без проблем удается открыть, а википедию нет.
 

ys

отодвинутый новичок
Sepuka

Бывает, что кто-то не хочет смотреть как запрашивают страницу нормальные обычные браузеры.

ru.wikipedia.org тут вообще нипричем.
 

Sepuka

Новичок
Да я все понимаю, что ни чего не понимаю. Я вот щас как раз собрался найти программулину для того чтобы посмотреть что отправляет мой браузер, что принимает я и так вижу.
Обычно я вместо браузера отправляю следующее:
GET путь к странице HTTP/1.0\r\n
Host: хост \r\n
Referer: www.***.ru\r\n
User-Agent: ***\r\n
Accept: *\/*\r\n
Accept-Language: ru\r\n
Accept-Charset: windows-1251\r\n
Connection: close\r\n\r\n
ну или что-то в этом роде. Единственный кто мне ответил с кодом 400 это была википедия, то есть конечно бывают 301 302... Там я смотрю location и иду туда. А здесь синт ошибка. Подскажи тогда чем посмотреть заголовки браузера (может нужет http-снифер я не знаю) чем сам пользуешься.
 

ys

отодвинутый новичок
Sepuka

Не верю насчет:
> "GET путь к странице HTTP/1.0\r\n"
 

Sepuka

Новичок
не понял, поясни, во что ты не веришь? То что я так писал? =) Ну я не знаю как тебе доказать =) Расскажи подробнее что ты имеешь ввиду
может это конечно и глупость, но я обычно начинаю заголовок именно так
 

ys

отодвинутый новичок
1. В нем нет метода
2. В нем нет хоста (т.к. Вы сами обьявили HTTP 1.0)
 

Sepuka

Новичок
ну так вроде GET - метод, а хост ниже

GET путь к странице HTTP/1.0\r\n
Host: хост \r\n

-~{}~ 24.10.08 21:46:

вот даже я читаю из википедии


Пример диалога HTTP
Запрос:
GET /wiki/HTTP HTTP/1.1
Host: ru.wikipedia.org
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close

Ответ:
HTTP/1.0 200 OK
Server: nginx/0.6.31
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
 

ys

отодвинутый новичок
Тьфу, не метода, а протокола...
А если надо "Host:" то, тогда и говорите HTTP/1.1

add: а не HTTP/1.0
 

Sepuka

Новичок
То есть если я пишу хост то я пишу http/1.1 если хост не писать, то и протокол http/1.0 ? так получается? Просто проработало у меня так как я писал выше достаточно долго без проблем и тут я натолкнулся что википедия странно работает... Ну щас попробую
 

ys

отодвинутый новичок
И в той же википедии на той-же странице есть пара ссылок:

http://tools.ietf.org/html/rfc1945 [http/1.0]
http://tools.ietf.org/html/rfc2616 [http/1.1]
 

Sepuka

Новичок
ок, щас гляну. А пока пробовал отправить следующее
GET /wiki/Http HTTP/1.1 Host: ru.wikipedia.org Referer: www.***.ru User-Agent: *** Accept: *\/* Accept-Language: ru Accept-Charset: windows-1251 Connection: close

получил следующее
HTTP/1.0 400 Bad Request Server: squid/2.6.STABLE21 Date: Fri, 24 Oct 2008 17:49:27 GMT Content-Type: text/html Content-Length: 50860 Expires: Fri, 24 Oct 2008 17:49:27 GMT X-Squid-Error: ERR_INVALID_URL 0 X-Cache: MISS from knsq24.knams.wikimedia.org X-Cache-Lookup: NONE from knsq24.knams.wikimedia.org:80 Via: 1.0 knsq24.knams.wikimedia.org:80 (squid/2.6.STABLE21) Connection: close

то есть тоже самое что и было
 

ys

отодвинутый новичок
В http/1.0 надо после GET указывать полный URL в виде "http://<имя сайта>/<имя локального ресурса>

в 1.1 оно мигрировало в отдельные хидеры.
 
Сверху