在Magento中,我試圖設置一個路由/控制器,它將接收XML POST數據,處理它並返回響應。Magento:接收XML發佈數據
我的路由設置正確,我的索引控制器設置了indexAction()。但是,使用郵差,當我嘗試和POST XML數據到路由時,Mage::app()->getRequest()->getPost()
返回空。我也試過$this->getRequest()->getParams()
以及相同的結果。
有什麼我失蹤了嗎?
在Magento中,我試圖設置一個路由/控制器,它將接收XML POST數據,處理它並返回響應。Magento:接收XML發佈數據
我的路由設置正確,我的索引控制器設置了indexAction()。但是,使用郵差,當我嘗試和POST XML數據到路由時,Mage::app()->getRequest()->getPost()
返回空。我也試過$this->getRequest()->getParams()
以及相同的結果。
有什麼我失蹤了嗎?
getRequest()->getPost()
爲_POST $變量
和$ _POST一個包裝被設置爲:
Content-Type: application/x-www-form-urlencoded
換句話說,對於標準web表單(發送PARAMS像用戶名=管理員&通=爲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
}
}
我不認爲這裏有足夠的信息。你能分享一些你的路由器/控制器代碼嗎? – 2015-01-15 19:12:00