2016-11-16 98 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; 
}