我正在使用一种 Web 服务,该服务将 HTTP POST 提交到 PHP 页面,如下所示:
表单/帖子参数: 无
标题: 内容类型:文本/xml
body :
<?xml version="1.0"?>
<mogreet>
<event>message-in</event>
<type>command_sms</type>
<campaign_id>12345</campaign_id>
<shortcode>123456</shortcode>
<msisdn>15552345678</msisdn>
<carrier><![CDATA[T-Mobile]]></carrier>
<carrier_id>2</carrier_id>
<message><![CDATA[xxxx testing]]></message>
</mogreet>
我需要能够将每个 XML 元素转换为 PHP 变量,以便更新数据库。我以前从未处理过带有 XML 数据的传入 POST,也不确定从哪里开始 - 我熟悉处理传入的 GET/POST 请求,但不熟悉原始 xml。
请您参考如下方法:
我认为您需要使用 $HTTP_RAW_POST_DATA
.之后,您可以按照@ChristianGolihardt 的建议使用SimpleXMLElement
。
请注意,只有在 php.ini 中启用了 always_populate_raw_post_data
设置后,HTTP_RAW_POST_DATA
才可用。否则,这样做可能最简单:
$postData = file_get_contents("php://input");
...
$xml = new SimpleXMLElement($postData);
...