Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

работа с socket-ами

537
28 апреля 2003 года
Cover
87 / / 14.11.2002
Я читаю курс доллара с центробанковского сайта и у меня на моей страничке (хостинг от valuеhost) все нормально читает, а у заказчика - не читает. Я сначало думал, что с сокетами работа запрещена, но после тестов стал сомневаться.
Вот такой код:
Код:
$fp = fsockopen("www.cbr.ru", 80, &$errno, &$errstr);
if(!$fp) {
    $ERROR_MSG = "err conn  to cbr.ru | '$errstr'($errno)";
        return 0;
    }
 else {
    fputs($fp,"GET / HTTP/1.0\n\n");
    $status=0;
    while(!feof($fp)) {
        $dur_str=fgets($fp,256);
        echo $dur_str;
...

ошибку там, где if(!$fp) не выводит - значит законнектился(?), но и страницу не читатет, а выводит (там, где echo $dur_str) следующее:
HTTP/1.0 400 Bad Request Conent-Type: text/html
Invalid request:


No host part in URL
Please, check URL.



--------------------------------------------------------------------------------
Generated by Oops. Couldn't read rate exchange. Error = 'func rate_change_fpst | wrong result | status='0''

- получается, что запрошенная страница не существует (?).
Так в чем дело, кто нибудь знает????
250
29 апреля 2003 года
Joker
1.4K / / 20.02.2000
Цитата:
Originally posted by Cover
Я читаю курс доллара с центробанковского сайта и у меня на моей страничке (хостинг от valuеhost) все нормально читает, а у заказчика - не читает. Я сначало думал, что с сокетами работа запрещена, но после тестов стал сомневаться.
Вот такой код:
Код:
$fp = fsockopen("www.cbr.ru", 80, &$errno, &$errstr);
if(!$fp) {
    $ERROR_MSG = "err conn to www.cbr.ru' | '$errstr'($errno)";
        return 0;
    }
 else {
    fputs($fp,"GET / HTTP/1.0\n\n");
    $status=0;
    while(!feof($fp)) {
        $dur_str=fgets($fp,256);
        echo $dur_str;
...

ошибку там, где if(!$fp) не выводит - значит законнектился(?), но и страницу не читатет, а выводит (там, где echo $dur_str) следующее:
HTTP/1.0 400 Bad Request Conent-Type: text/html
Invalid request:


No host part in URL
Please, check URL.



--------------------------------------------------------------------------------
Generated by Oops. Couldn't read rate exchange. Error = 'func rate_change_fpst | wrong result | status='0''

- получается, что запрошенная страница не существует (?).
Так в чем дело, кто нибудь знает????



Ну если на одном работало а на другом нет=> дело в хосте заказщика.. , попробуй с него к другим сайтам поконектится (поотправлять запросы), может все запросы с этого хостинга блочатся cbr.ru врянтов может быть море..

4
30 апреля 2003 года
mike
3.7K / / 01.10.2002
Ну сам в своем вопросе написал ответ. Дело в том что с valuehost'а идет напрямую к сайту cbr.ru, которые понимает запросы http/0.9 и более ранее.

В http 1.0 и выже должно быть указано поле Host. Это для поддержки виртуальных серверов.

С сервера заказчика соединение идет через прокси-сервер, который понятие не имеет с какого сервера должен брать контент. Вот и говорит

No host part in URL
Please, check URL.

если через прокси, то делай так:

 
Код:
fputs($fp,"GET http://www.cbr.ru/ HTTP/1.0\n";
fputs($fp,"Host: www.cbr.ru\n\n");


иначе так:

 
Код:
fputs($fp,"GET / HTTP/1.0\n");
fputs($fp,"Host: www.cbr.ru\n\n");
537
01 мая 2003 года
Cover
87 / / 14.11.2002
То, что написано
No host part in URL
Please, check URL.
- это я увидел, но т.к. в этом деле не очень соображаю, то не понял, что имелось ввиду.
А теперь вроде разобрался.
спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог