寻找一个本质上与PHP's cURL相反的解决方案


Looking for a solution that is essentially the opposite of PHP's cURL

我的标题很好地解释了我在寻找什么,但更多的细节。我们目前有一个使用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);