Почему этот скрипт API Twitter не работает?

Я получаю сообщение об ошибке из этого скрипта Twitter, из-за которого остальная часть страницы не загружается. Не знаю, почему это происходит внезапно, где он функционирует должным образом в течение некоторого времени.

Сценарий выглядит так, и он тянет текущий статус пользователей:

<?php $response = new SimpleXMLElement('http://twitter.com/users/show/tuscaroratackle.xml',NULL,TRUE); echo $response->status->text.''; ?> 

Вот еще одно сообщение, которое я пытался выяснить, ответ на другой баг, который указал мне на эту ошибку в Twitter.

Вы можете увидеть его здесь, в нижнем колонтитуле, или вырезку выхода: http://cl.ly/33IZ .

Соответствующая ошибка (которая отображается в нижнем колонтитуле страницы, на которую вы ссылались):

 Warning: SimpleXMLElement::__construct(http://twitter.com/users/show/tuscaroratackle.xml) [simplexmlelement.--construct]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /home5/tuscaror/public_html/footer.php on line 47 Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: I/O warning : failed to load external entity "http://twitter.com/users/show/tuscaroratackle.xml" in /home5/tuscaror/public_html/footer.php on line 47 Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home5/tuscaror/public_html/footer.php:47 Stack trace: #0 /home5/tuscaror/public_html/footer.php(47): SimpleXMLElement->__construct('http://twitter....', 0, true) #1 /home5/tuscaror/public_html/index.php(119): include('/home5/tuscaror...') #2 {main} thrown in /home5/tuscaror/public_html/footer.php on line 47 

Первое предупреждение сообщает вам, что произошло: «HTTP-запрос не удался! HTTP / 1.1 400 Bad Request».

Поэтому по какой-то причине ваш сервер терпит неудачу, когда HTTP-запрос на твиттер возвращает документ "http://twitter.com/users/show/tuscaroratackle.xml" . Код возврата – 400 Bad Request .

Я просто попробовал тот же запрос из своего веб-браузера, и он работал нормально, поэтому либо твиттер был временно «на обед» (что происходит время от времени), либо есть что-то уникальное в конфигурации сети вашего сервера. Мое первое предположение заключалось в том, что где-то вверх по потоку с вашего сервера, кто-то установил прокси-сервер HTTP, который (по какой-то неизвестной причине) блокирует ваш запрос.


Вот что должен сказать твиттер об этом :

 400 Bad Request: The request was invalid. An accompanying error message will explain why. This is the status code will be returned during rate limiting. 

Вот страница twitter в разделе «Ограничение скорости» . Я подозреваю, что это ваш преступник. Если вы считаете иначе, вы можете попробовать получить документ в виде строки и изучить его, прежде чем пытаться его проанализировать, чтобы вы могли видеть, что такое сообщение.

Это быстро и грязно, но он получит сообщение, чтобы вы могли видеть, что происходит:

 $str = file_get_contents('http://twitter.com/users/show/tuscaroratackle.xml'); echo $str; 

который может выйти из строя из-за 400 кода ответа. если это так, вам нужно будет использовать php curl для получения тела без ответа.

удачи!