2017-08-25 109 views
-1

This是我的XML格式.ATOM供稿。我收到以下警告。cURL请求.ATOM供稿问题

我面临的问题是试图从ATOM URL中提取数据并将其显示为PHP代码并将其保存到数据库中。我不断收到这些错误...

我试过使用loadfilecurl,vardump()并没有任何工作。

警告: 使用simplexml_load_file(https://colourpop.com/collections/all.atom): 未能打开流:HTTP请求失败! HTTP/1.1 403禁止在 /public_html/ecomcharts/beta/indexproducts.php上线226

警告:使用simplexml_load_file():I/O警告:未能加载外部 实体 “https://colourpop.com/collections/all.atom” 在 /的public_html/ecomcharts在线/beta/indexproducts.php 226布尔(假)

警告:的SimpleXMLElement :: __结构():实体:行1:分析器错误 :开始标记预期, '<' 不 /的public_html/ecomcharts发现/beta/indexproducts.php 228行

警告:的SimpleXMLElement :: __结构(): https://colourpop.com/collections/all.atom在 //ecomcharts/beta/indexproducts.php上线228

我不知道什么是错的。这是我的PHP代码:

<?php 
    $url = 'https://colourpop.com/collections/all.atom'; 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_HEADER, false); 
    $data = curl_exec($curl); 
    curl_close($curl); 

    function download_page($path) { 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL,$path); 
     curl_setopt($ch, CURLOPT_FAILONERROR,1); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
     curl_setopt($ch, CURLOPT_TIMEOUT, 15); 
     $retValue = curl_exec($ch);   
     curl_close($ch); 
     return $retValue; 
    } 

    $sXML = download_page('https://colourpop.com/collections/all.atom'); 
    echo $sXML; 
    $xml=var_dump(simplexml_load_file('https://colourpop.com/collections/all.atom')); 

    $oXML = new SimpleXMLElement('https://colourpop.com/collections/all.atom'); 

    foreach($oXML->entry as $oEntry) { 
     echo $oEntry->title . "\n"; 
    } 
?> 
+0

您到目前为止尝试过哪些操作失败?如果您手动执行控制台的cURL请求,您会看到什么?请用上述信息编辑您的问题,以便有人能够帮助您。 –

+0

好的我编辑它:) –

+0

如果你从控制台手动尝试cURL命令,你会得到一个错误吗? –

回答

0

当创建与构造一个SimpleXMLElement,你的文件,而不是文件名的内容传递,所以你的情况......

<?php 
$url = 'https://colourpop.com/collections/all.atom'; 
$options = array(
     CURLOPT_RETURNTRANSFER => true,  // return web page 
     CURLOPT_HEADER   => false, // don't return headers 
     CURLOPT_FOLLOWLOCATION => true,  // follow redirects 
     CURLOPT_ENCODING  => "",  // handle all encodings 
     CURLOPT_USERAGENT  => "spider", // who am i 
     CURLOPT_AUTOREFERER => true,  // set referer on redirect 
     CURLOPT_CONNECTTIMEOUT => 120,  // timeout on connect 
     CURLOPT_TIMEOUT  => 120,  // timeout on response 
     CURLOPT_MAXREDIRS  => 10,  // stop after 10 redirects 
     CURLOPT_SSL_VERIFYPEER => false  // Disabled SSL Cert checks 
); 

$ch  = curl_init($url); 
curl_setopt_array($ch, $options); 
$sXML = curl_exec($ch); 
curl_close($ch); 

$oXML = new SimpleXMLElement ($sXML); 

foreach ($oXML->entry as $oEntry) { 
    echo $oEntry->title . "\n"; 
} 

这还修复了尝试使用curl读取HTTPS页面的问题(使用CURLOPT_SSL_VERIFIER方法)