如何接收XML请求并在PHP中发送响应XML?
问题描述:
因此,我需要建立一个应用程序,将接收XML请求,并基于此,我将不得不返回响应XML。我知道如何发送请求并收到回复,但我从来没有以其他方式做过。我会发送这样的请求:如何接收XML请求并在PHP中发送响应XML?
private function sendRequest($requestXML)
{
$server = 'http://www.something.com/myapp';
$headers = array(
"Content-type: text/xml"
,"Content-length: ".strlen($requestXML)
,"Connection: close"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $server);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXML);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$data = curl_exec($ch);
if(curl_errno($ch)){
print curl_error($ch);
echo " something went wrong..... try later";
}else{
curl_close($ch);
}
return $data;
}
我的问题是 - 什么是接收端的代码?我如何捕获传入的请求? 谢谢。
答
总体思路是读取POST值,将其解析为XML,对其做出业务决策,根据您决定的API构建XML响应,并将其写入响应中。
阅读在POST值:
$dataPOST = trim(file_get_contents('php://input'));
解析为XML:
$xmlData = simplexml_load_string($dataPOST);
然后,你就打造出了一个XML字符串(或文档树,如果你愿意的话),并打印出来直到回应。 print()或echo()会很好。
答
接收端只需创建一个'普通'PHP脚本即可。根据您的端点和请求服务之间的协议,您需要从正确的位置获取数据,该数据很可能是数组。
您可能需要阅读原始 POST数据,如果它不是在$ _ POST未来通过,采取高峰在本文
顶尖的解决方案。 – Matth3w 2015-11-09 22:56:03