我的标题非常适合解释我正在寻找的内容,但更多细节。我们目前有一项服务,使用cURL将数据发送到URL。现在我们实现的下一阶段我们需要在我们的服务器上有一个URL来接受传入的POST数据,特别是XML格式的数据。
有没有人知道处理这种情况的任何解决方案?我知道一旦得到数据,我们就可以使用SimpleXML将其解析为我们需要的外向格式。在这种情况下,我们本质上是处理数据的中间件。
答案 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);