работа с socket-ами
Вот такой код:
Код:
$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) {
$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''
- получается, что запрошенная страница не существует (?).
Так в чем дело, кто нибудь знает????
Цитата:
Originally posted by Cover
Я читаю курс доллара с центробанковского сайта и у меня на моей страничке (хостинг от valuеhost) все нормально читает, а у заказчика - не читает. Я сначало думал, что с сокетами работа запрещена, но после тестов стал сомневаться.
Вот такой код:
ошибку там, где 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''
- получается, что запрошенная страница не существует (?).
Так в чем дело, кто нибудь знает????
Я читаю курс доллара с центробанковского сайта и у меня на моей страничке (хостинг от 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) {
$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 врянтов может быть море..
В 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,"Host: www.cbr.ru\n\n");
иначе так:
Код:
fputs($fp,"GET / HTTP/1.0\n");
fputs($fp,"Host: www.cbr.ru\n\n");
fputs($fp,"Host: www.cbr.ru\n\n");
No host part in URL
Please, check URL.
- это я увидел, но т.к. в этом деле не очень соображаю, то не понял, что имелось ввиду.
А теперь вроде разобрался.
спасибо.