Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Чтение удаленного файла failed to open stream: HTTP request failed

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Чтение удаленного файла failed to open stream: HTTP request failed
hated8
Отправлено: 15 Января, 2011 - 08:40:58
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Здравствуйте!
Не могу прочитать ссылку...
Открываю

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $tFile = fopen('http://site.ru','r');
  4. while (!feof($tFile))
  5. {
  6.    echo( fgets($tFile));
  7. }
  8. fclose($tFile);
  9. ?>
  10.  

- на fopen возвращает Warning: fopen(ссылка) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 402 Payment Required in...


Проблемма в том что такой результат я получаю на хостинге! На денвере(локальном) все работает...
Ссылка рабочая, на этой же страничке гружу её в ифрейм, она грузится без проблем...
На хостинге запретов вроде тоже нет т.к. другие ссылки нормально читаются!...

В чём может быть проблемма?

(Отредактировано автором: 15 Января, 2011 - 08:42:21)

 
 Top
Мелкий Супермодератор
Отправлено: 15 Января, 2011 - 12:08:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




К удалённым объектам обращаться только через сокеты или cURL'ом.

Однако, забавно: RFC2616 определяется 402 ответ как зарезервированный для дальнейшего использования, но сейчас неиспользуемый.


-----
PostgreSQL DBA
 
 Top
hated8
Отправлено: 15 Января, 2011 - 13:33:32
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




К сожалению, ваш ответ не понял.... )
 
 Top
OrmaJever Модератор
Отправлено: 15 Января, 2011 - 13:40:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




hated8 пишет:
К сожалению, ваш ответ не понял.... )

функции fopen(), file_get_contents() не предназначены для работы с удалёными соединениями. Место их нужно использовать curl
http://php.su/lessons/?lesson_11


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Января, 2011 - 13:52:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




OrmaJever пишет:
fopen(), file_get_contents()

Есть оговорочка небольшая. Да, действительно лучше сокетами, но выйдет обертка как и с файлами )))
CODE (htmlphp):
скопировать код в буфер обмена
  1. $send = 'send message';
  2. $socket = fsockopen('ip_address',80);
  3. fwrite($socket,$send);
  4. fflush($socket);
  5. $request = fread($socket,32);
  6. fclose($socket);
  7. echo $request;

(Добавление)
hated8 функция fgets() в вашем примере внутри цикла осуществляет ПОСИМВОЛЬНОЕ чтение ФАЙЛА, и при ПАКЕТНОЙ передаче по сети это естественно работать не будет (исключением является "Partipial Content" с соответствующими данными о длине текущего пакета и как его с предыдущим пакетом соединить)... Рабочий пример с отправкой и приемом я привел выше. Работаем как с файлом, лочить тоже можно.

(Отредактировано автором: 15 Января, 2011 - 14:08:15)

 
 Top
JustUserR
Отправлено: 15 Января, 2011 - 19:22:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




DeepVarvar пишет:
Функция fgets() в вашем примере внутри цикла осуществляет ПОСИМВОЛЬНОЕ чтение ФАЙЛА, и при ПАКЕТНОЙ передаче по сети это естественно работать не будет
Предполагаемый набор функций оригинальной работы с файловыми объектами локальной системы для которых осуществлена перегрузка с включением возможностями HTTP-взамодействия - в действительности не являются эквивалентными оригинальным фунциям и представлют действия на более высоком урвоне абстракции Кроме того всех получаемые HTTP-документы включает определение явного объекма передаваемых информационных полей - транспортируемой в полях HTTP-заголовка Content-length или текущем chunked-элементе


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB