从 1.6 升级到 1.9.3 时,Magento Web 服务返回 complexarray``

Magento web service returning complexarray when upgraded from 1.6 to 1.9.3``

要在 visual studio 中使用 magento 网络 api 我添加了网络服务参考:

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>

所以我得到的不是 item/product 信息,而是 <complexObjectArray />。如何解决此问题并获取 item/product 信息?

我确实获得了其他订单信息,例如总信息和客户/地址信息。但我没有得到的是 <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

问题出在提到的文件上

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