我从这个Twitter脚本收到一个错误,导致页面的其余部分无法加载.不知道为什么突然发生这种情况,它在相当长的一段时间内正常运作.
<?PHP $response = new SimpleXMLElement('http://twitter.com/users/show/tuscaroratackle.xml',NULL,TRUE); echo $response->status->text.''; ?>
这是另一篇文章,我试图找出另一个错误的答案,这个错误指出了我的Twitter错误.
你可以在页脚中看到它here,或者输出的屏幕抓图: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....',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错误请求”.
因此,出于某种原因,在向Twitter发送HTTP请求以检索文档“http://twitter.com/users/show/tuscaroratackle.xml”时,您的服务器失败了.返回码为400 Bad Request.
我刚刚从我的网络浏览器尝试了同样的请求,它工作正常,所以要么Twitter暂时“外出吃午饭”(这确实会不时发生),或者服务器的网络配置有一些独特之处.我的第一个猜测是,从您的服务器上游的某个地方,有人安装了一个HTTP代理(由于某种未知的原因)阻止您的请求.
这是什么twitter has to say about it:
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.
Here is twitter’s page on Rate Limiting.我怀疑这是你的罪魁祸首.如果您不这么认为,那么您可能会尝试将文档作为字符串检索并在尝试解析之前对其进行检查,以便您可以看到该消息是什么.
这很快,很脏,但它会收到消息,以便您可以看到正在发生的事情:
$str = file_get_contents('http://twitter.com/users/show/tuscaroratackle.xml'); echo $str;
由于400响应代码可能会失败.如果是这样,你需要使用php curl来获取未解析的响应体.
祝你好运!