2017-08-25 1 views
-1

Thisは、私のXML形式の.ATOMフィードです。私は次の警告を受けています。.ATOMフィード発行のためのcURLリクエスト

私は、ATOM URLからデータを抽出してPHPコードとして表示し、データベースに保存しようとする問題に直面しています。これらのエラーが発生しています...

私は、loadfilecurlvardump()を試してみましたが、何も機能しませんでした。

警告: simplexml_load_file(https://colourpop.com/collections/all.atom): は、ストリームをオープンに失敗しました:HTTPリクエストが失敗しました! HTTP/ /public_html/ecomcharts/beta/indexproducts.phpで禁じ1.1 403はラインで226

警告:simplexml_load_file():I/O警告: /public_htmlの/ ecomchartsに外部 実体 "https://colourpop.com/collections/all.atom" をロードに失敗しましたライン上の/beta/indexproducts.php 226個のブール値(false)を

警告:にSimpleXMLElement :: __構築物():エンティティ:行1:パーサエラー :開始タグが予想、 '<' /public_htmlの/ ecomchartsには見られません/beta/indexproducts.phpオンライン228

警告: SimpleXMLElement :: __構築物(): https://colourpop.com/collections/all.atomライン228

に//ecomcharts/beta/indexproducts.php で私が間違っているのかわからないです。これは私の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

ok私はそれを編集しました:) –

+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"; 
} 

これは、 (CURLOPT_SSL_VERIFIERメソッドを使用して)curlを使用してHTTPSページを読み取ろうとする問題を解決しました

関連する問題