在Magento中,我试图设置一个路由/控制器,它将接收XML POST数据,处理它并返回响应。
我的路线设置正确,我的索引控制器设置了indexAction()。但是,使用Postman,当我尝试将XML数据发送到路由时,Mage::app()->getRequest()->getPost()
将返回空。我也尝试过$this->getRequest()->getParams()
同样的结果。
我有什么遗失的吗?
答案 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
}
}