我正在測試一個XML API,它正在成功擊中我的帳戶,並且我得到一個響應,但響應似乎是一個沒有標記或任何內容的純文本字符串,甚至沒有名稱/配對值。我需要將響應作爲XML採集,以便我可以使用XML標記來識別響應變量。如何使用PHP強制XML響應CURL
我使用表單POST來將表單中的數據傳遞到CURL頁面,該頁面將POST解析爲XML格式,然後使用CURL將其發送到API。這個API是基於XML的,我希望得到一個XML響應,但是它會收到
幫助!
捲曲的請求/響應PAGE
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$xml = "<?xml version='1.0' encoding='UTF-8'?>";
$xml .= "<request>";
foreach ($_POST as $key => $val) {
$xml .= "<".$key.">". $val ."</".$key.">";
}
$xml .= "<username>user1234</username>";
$xml .= "<password>pass1234</password>";
$xml .= "</request>";
echo "<br/>" . $xml . "<br/><br/>";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.beanstream.com/scripts/process_transaction.aspx');
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/xml'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
$output = curl_exec($ch);
curl_close($ch);
print_r($output);
}
?>
API響應與頭
HTTP/1.1 200 OK Cache-Control: private Content-Length: 724 Content-Type: application/xml; charset=utf-8 X-Powered-By: ASP.NET X-AspNet-Version: 2.0.50727 Set-Cookie: ASP.NET_SessionId=1p4jp2uoz2de3f45iolold3j; path=/; HttpOnly Date: Wed, 16 Oct 2013 21:39:38 GMT 1100001211ApprovedQCE9HW5ETESTNT53.4810/16/2013 2:39:38 PM1W001Postal/ZIP matches, street address does not match.1VIPCC7
它返回的罰款。不要在瀏覽器中查看它,查看頁面的_source_(呈現爲「html」將隱藏所有標記和換行符等) – Wrikken
您是對的,我可以在頁面源中看到XML格式。如何在屏幕上將響應顯示爲XML樹?有沒有簡單的方法來做到這一點沒有JavaScript? –
任何人都知道我可以如何在屏幕上將XML顯示爲XML樹,類似於如果您在Web瀏覽器中打開XML文檔? –