2017-08-25 111 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方法)