我的标题很好地解释了我在寻找什么,但更多的细节。我们目前有一个使用cURL向URL发送数据的服务。现在,在实现的下一个阶段,我们需要在服务器上有一个URL,该URL接受传入的POST数据,特别是XML格式的数据。
有人知道处理这种情况的任何解决方案吗?我知道一旦我们获得数据,我们可以使用SimpleXML将其解析成我们需要的格式。在这种情况下,我们本质上是处理数据的中间件。
基本上,您需要做的就是接受参数(在本例中是XML)作为$_POST
变量,然后打印出响应。获得XML后,可以将其设置为一个变量,就像从$_POST
获得的任何其他字段一样,然后处理它。一旦您完成了您的工作,只需打印出一条消息,这是用户调用您的API时将返回的响应。
如果您要返回某种类型的数据,比如XML,您可以在那里添加一个头,告诉PHP以该类型输出响应。
// STORE THE POST INTO A VARIABLE THAT YOU CAN WORK WITH
$xml = $_POST['body'];
// DO SOMETHING WITH THE XML
// SEND A RESPONSE BACK TO THE CLIENT
header('Content-Type: application/xml; charset=utf-8');
print '<?xml version="1.0" ?>
<response>
<status>Accepted</status>
</response>
</xml>';
解决方案取决于POST数据到达您的方式。
如果数据来自POST字段,那么PHP将填充$_POST
超全局变量,您可以通过命名POST字段访问数据:
//postdata: xml=<myxml>…</myxml>
$xml = $_POST['xml'];
如果数据是作为原始POST来的,但是您需要从input
流中读取:
//raw postdata: <myxml>…</myxml>
$xml = file_get_contents('php://input');
一旦你在PHP变量中有了数据,你可以随心所欲地处理它:
$xmlObj = simplexml_load_string($xml);