寻找与PHP的cURL基本相反的解决方案

时间:2014-06-27 16:53:50

标签: php xml curl

我的标题非常适合解释我正在寻找的内容,但更多细节。我们目前有一项服务,使用cURL将数据发送到URL。现在我们实现的下一阶段我们需要在我们的服务器上有一个URL来接受传入的POST数据,特别是XML格式的数据。

有没有人知道处理这种情况的任何解决方案?我知道一旦得到数据,我们就可以使用SimpleXML将其解析为我们需要的外向格式。在这种情况下,我们本质上是处理数据的中间件。

2 个答案:

答案 0 :(得分:1)

基本上,您需要做的就是接受参数(在本例中为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>';

答案 1 :(得分:1)

解决方案取决于POST数据的获取方式。

如果数据来自POST字段,那么PHP将填充$_POST超全局,您可以通过命名的POST字段访问数据:

//postdata: xml=<myxml>…</myxml>

$xml = $_POST['xml'];

如果数据是作为原始POST发送的,那么您需要阅读input stream

//raw postdata: <myxml>…</myxml>

$xml = file_get_contents('php://input');

在PHP变量中获得数据之后,您可以根据需要使用它:

$xmlObj = simplexml_load_string($xml);