Magento:接收XML发布数据

时间:2015-01-15 18:11:38

标签: xml magento

在Magento中,我试图设置一个路由/控制器,它将接收XML POST数据,处理它并返回响应。

我的路线设置正确,我的索引控制器设置了indexAction()。但是,使用Postman,当我尝试将XML数据发送到路由时,Mage::app()->getRequest()->getPost()将返回空。我也尝试过$this->getRequest()->getParams()同样的结果。

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:1)

getRequest()->getPost()是$ _POST变量的包装器 并且$ _POST设置为:
Content-Type: application/x-www-form-urlencoded
换句话说,对于标准网络表单(发送诸如username = admin& pass = mypass之类的参数)

$ _ POST未设置为:
Content-Type:text/xml
所以你不会在$ _POST中获得你的xml。

getRequest()->getParams()包含$ _POST,$ _GET和路由参数,再次你不会在这里得到你的xml。

您可以查看Zend_Controller_Request_Http类以了解这些方法。

你必须自己解析发布的xml。你可以像这样检索它

if ($this->getRequest()->isPost() && $this->getRequest()->getHeader('Content-Type') == 'text/xml') { // don't forget to set proper content-type header when making the request
    $postedXml = $this->getRequest()->getRawBody();
    if (false !== $postedXml) {
        // process xml
    }
}