2015-01-15 82 views
0

在Magento中,我試圖設置一個路由/控制器,它將接收XML POST數據,處理它並返回響應。Magento:接收XML發佈數據

我的路由設置正確,我的索引控制器設置了indexAction()。但是,使用郵差,當我嘗試和POST XML數據到路由時,Mage::app()->getRequest()->getPost()返回空。我也試過$this->getRequest()->getParams()以及相同的結果。

有什麼我失蹤了嗎?

+0

我不認爲這裏有足夠的信息。你能分享一些你的路由器/控制器代碼嗎? – 2015-01-15 19:12:00

回答

1

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 
    } 
}