2016-11-16 46 views
1

要使用Visual Studio中的Magento的網絡API,我添加Web服務引用時返回complexarray:Magento的Web服務從1.6升級到1.9.3``

https://www.example.com/api/v2_soap?wsdl 

我進口訂單信息正確使用

mageservice.salesOrderInfo(sessionId, orderId); 

然後,我將magento從v1.6.0.0升級到v1.9.3.0。我現在無法獲取訂單的商品信息。當通過提琴手檢查,我得到以下幾點:

<items> 
    <complexObjectArray/> 
    <complexObjectArray/> 
    <complexObjectArray/> 
    <complexObjectArray/> 
</items> 

所以不是讓我得到<complexObjectArray />而不是項目/產品信息的。我該如何解決此問題並獲取產品/產品信息?

我確實收到其他訂單信息,例如總計信息和客戶/地址信息。但我沒有得到的是<items>信息和<status_history>信息。

謝謝。

編輯:在system.log中,每次運行API時,我都會得到大約5行。響應中每個complexObjectArray約有一個。

2016-11-17T18:12:36+00:00 DEBUG (7): Array to string conversion/var/www/html/gmw.com/app/code/core/Mage/Api/Model/Server/Handler/Abstract.php 

回答

1

的問題是與該文件提到

/var/www/html/gmw.com/app/code/core/Mage/Api/Model/Server/Handler/Abstract.php 

在下面的方法:

public function processingMethodResult(array $result) { 

    foreach ($result as &$row) { 
     if (!is_null($row) && !is_bool($row) && !is_numeric($row)) { 
      $row = $this->processingRow($row); 
     } 
    } 
    return $result; 
} 

我把它改成下面的一個和它的工作

public function processingMethodResult(array $result) { 
    foreach ($result as &$row) { 
     if (is_array($row)) { // added this if statement 
      foreach ($row as &$subrow) { 
       $subrow = $this->processingRow($subrow); 
      } 
     } else if (!is_null($row) && !is_bool($row) && !is_numeric($row)) { 

      $row = $this->processingRow($row); 
     } 
    } 
    return $result; 
}