XML ファイルを返す Web サービスで POST アクションを実行しようとしています。その後、XMLファイルを表示しようとしています。私の .php は現在次のようになっています。
echo "Downloading XML" . "\n";
$xml = file_get_contents('xml.xml');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://secure.microincasso.nl/PaymentCampaign/");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-type: text/xml'
));
$sXML = curl_exec($ch);
curl_close($ch);
echo "sXML: " . "\n";
echo $sXML;
echo "\n" . "endof:sXML" . "\n";
echo "Parsing XML\n";
$oXML = new SimpleXMLElement($sXML);
echo "\nXML parsed\n\n";
foreach ($oXML->entry as $oEntry)
{
echo $oEntry->title . "\n";
}
ご覧のとおり、xml.xml
ファイルは POST パラメーターとして送信されます。この XML ファイルは正しいです。私が得る出力は次のとおりです。
XML sXML をダウンロードしています: HTTP/1.1 200 OK https://payment.microincasso.nl/Payment/xxxxxxxxxxxxx endof:sXML 解析 XML 警告: SimpleXMLElement::__construct() [simplexmlelement.--construct]: エンティティ: 1 行目: パーサー エラー: 開始タグが必要です。'<' ではありませんD:\Users\xxxxxx\send.php の 46 行目にあります
警告: SimpleXMLElement::__construct() [simplexmlelement.--construct]: HTTP/1.1 200 OK in D:\Users\xxxxxx\send.php 行 46
警告: SimpleXMLElement::__construct() [simplexmlelement.--construct]: ^ in D:\Users\xxxxxx\send.php 行 46
致命的なエラー: D:\Users\xxxxxx\send.php:46 で「文字列を XML として解析できませんでした」というメッセージを含むキャッチされない例外「例外」: #0 D:\Users\xxxxxx\send.php(46) : SimpleXMLElement->__construct('HTTP/1.1 200 OK...') #1 {main} が D:\xxxxxx\send.php の 46 行目にスローされる
つまり、取得しようとしているリンクは応答にあります。応答には、必要なものが含まれています。しかし、応答は XML ではないようです。https://secure.microincasso.nl/PaymentCampaign/に直接移動すると、XML が表示されます。私は何を間違っていますか?PHP スクリプトに XML がなく、プレーン テキストが含まれているのはなぜですか? 生の XML を取得するにはどうすればよいですか?