simplexml_load_file()连接超时尝试解析远程xml

时间:2017-03-20 22:46:55

标签: php xml

我正在尝试从此网址解析xml文件 http://87.102.127.86:8081/kwiktext/kwiktext.exe?Page=52&compid=33&refnum=ICE2-1713464-220
引用号每天到期,因此您在查看时几乎看不到任何内容。但这与问题有关 我试图用simplexml_load_file()使用

解析它
<?php 
    $xml = 'http://87.102.127.86:8081/kwiktext/kwiktext.exe?Page=52&compid=33&refnum=ICE2-1713464-220';
    $xml= simplexml_load_file($xml) or die("Error: Cannot create object");

     echo urldecode($xml->hoteldescription); ?> 

未成功返回'连接超时'。 但是,当我尝试使用随机xml网址时,我在网上发现该操作完成得很好:

<?php $xml=simplexml_load_file('http://cloud.tfl.gov.uk/TrackerNet/PredictionSummary/V') or die("Error: Cannot create object");
echo $xml->Time['TimeStamp']?>

为什么我要连接超时?
链接的提供者说这是一项简单的任务。如果我从服务器上本地文件的url下载xml源代码,我可以毫无问题地获取它。所以远程请求必须有一些东西。

不用说我是一个php新手...特别是在服务器请求上。
谢谢!

修改
我也尝试过file_get_contents(),它对我不起作用。
最后我再次尝试但没有成功的是这个

function load_file_from_url($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_REFERER, 'mydomain');
    $str = curl_exec($curl);
    curl_close($curl);
    return $str;
  }
   function load_xml_from_url($url) {
    return simplexml_load_string(load_file_from_url($url));
  }
  $xml = load_xml_from_url('http://87.102.127.86:8081/kwiktext/kwiktext.exe?Page=52&compid=33&refnum=ICE2-1713464-220');'


编辑2
显然,该服务所需的8081端口在我尝试连接主机的两台服务器上都已关闭。

1 个答案:

答案 0 :(得分:0)

这对我来说很好。我复制并粘贴了你的代码并在本地运行它没有任何问题。如果遇到连接超时错误,它似乎是一个临时错误。我注意到的唯一错误是当您打印酒店描述时,属性名称不正确:

echo urldecode($xml->HotelDescription);