2011-06-29 12 views
1

URLからXML出力を取得するためにPHPのcURLを使用しています。ここに私のコードは次のようになります。cURLでXML出力を取得できません

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://www.mydomain.com?querystring'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, "username:password"); 
$store = curl_exec($ch); 
echo $store; 
curl_close($ch); 

しかし、代わりに、それはちょうど私の404エラーページを表示XMLを返します。 WebブラウザにURL http://www.mydomain.com?querystringと入力すると、ブラウザにXMLが表示されます。

私はここで何が欠けていますか? :(

感謝。

+0

PHPスクリプトは実行中ですか? nあなたのブラウザと同じマシンですか? 1つの場所でURLが動作するという理由だけで、別のマシンでどれくらいうまく動作するかについては何も意味しません。 –

+3

@Blueboye - @Mlue Bのコメントに加えて、Webサイトの所有者の中には、リクエストがWebブラウザであり、ボット(またはcURL)でないことを確認するための特定のものの存在をチェックするものがあります。 'curl_setopt($ ch、CURLOPT_USERAGENT、 'Mozilla/5.0(MSIE 9.0; Windows NT 6.1; Trident/5.0)');'を追加し、問題が修正されているかどうか確認してください。それはユーザーエージェント文字列を送信します。サイトでは、クッキーなどの存在を確認することもできます。 –

+0

localhostでPHPを実行していますが、ULRは外部サーバーです。 – Blueboye

答えて

2

いくつかのウェブサイトの所有者は、要求がWebブラウザではなく、ボット(またはcURLの)から来ていることを確認するために、特定の物事が存在するかどうかを確認。あなたはcurl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)');を追加してみて、その場合には見るべきです

XMLをWebページに出力するには、htmlentities()を使用する必要があります。あなたは、ユーザーエージェント文字列を送信します。 HTML <pre>要素の中にそれを囲みたいかもしれません。

+0

素晴らしい。あなたの迅速なお世話に感謝します。 私の2番目の質問に関する考え:XMLノードを読むためにこの出力をXMLファイルに保存する必要がありますか、それとも保存せずに行うことはできますか? – Blueboye

+0

['htmlspecialchars()'](http://php.net/manual/en/function.htmlspecialchars.php)を参考にしてください。そして実際には、完全に異なるエンコーディングでXMLをHTMLとして出力する前に、エンコーディングを反映させる必要があります。 – hakre

+0

@Blueboy、あなたは保存せずにそれを行うことができます。 DomDocumentを使用し、ファイル*と*の文字列で動作します。 – hakre

関連する問題