Magento XMLRPC API使用finset运算符失败

时间:2010-09-19 18:28:08

标签: api magento xml-rpc

Magento版本1.4.1.1

我正在尝试使用XMLRPC API(catalog_product.list方法调用)检索为特定网站过滤的产品列表。服务器返回“未知错误”。我可以调用相同的方法并按状态,sku等进行过滤。但是,当我尝试过滤可能包含多个值的字段(例如网站,类别,category_ids)时,我会收到未知错误。

我正在使用C#和Charles Cook优秀的xmlrpc.net库。我已经捕获了发送到服务器的XML,如下所示。任何人都可以提供有关为何发生这种情况的任何见解吗?

这有效:

<?xml version="1.0"?>
<methodCall>
  <methodName>call</methodName>
  <params>
    <param>
      <value>
        <string>81a7c4fffec8e78a6fe4b3f15f3e5cd0</string>
      </value>
    </param>
    <param>
      <value>
        <string>catalog_product.list</string>
      </value>
    </param>
    <param>
      <value>
        <array>
          <data>
            <value>
              <struct>
                <member>
                  <name>status</name>
                  <value>
                    <struct>
                      <member>
                        <name>eq</name>
                        <value>
                          <string>1</string>
                        </value>
                      </member>
                    </struct>
                  </value>
                </member>
              </struct>
            </value>
          </data>
        </array>
      </value>
    </param>
  </params>
</methodCall>

这不是:

<?xml version="1.0"?>
<methodCall>
  <methodName>call</methodName>
  <params>
    <param>
      <value>
        <string>5d7412249845e29458b63e3b03935445</string>
      </value>
    </param>
    <param>
      <value>
        <string>catalog_product.list</string>
      </value>
    </param>
    <param>
      <value>
        <array>
          <data>
            <value>
              <struct>
                <member>
                  <name>websites</name>
                  <value>
                    <struct>
                      <member>
                        <name>finset</name>
                        <value>
                          <string>1</string>
                        </value>
                      </member>
                    </struct>
                  </value>
                </member>
              </struct>
            </value>
          </data>
        </array>
      </value>
    </param>
  </params>
</methodCall>

2 个答案:

答案 0 :(得分:0)

您可以使用xdebug和IDE来逐步完成请求并跟踪哪个类正在处理它吗?如果多个条件运算符需要特定语法,您可以读取源以跟踪。

修改

我记得如果有一个节点而不是多个兄弟节点,XSLT将不会创建一个数组。因此,如果finset或其他多个条件运算符期望一个数组,并且您在<value>下传递单个节点,则可能是作为标量接收,因此函数调用失败了?也许尝试发送<value><string>1</string><string>2</string></value>来测试我的理论?

答案 1 :(得分:0)

您可能想尝试一下,它可能会提供更多示例作为您问题的指南: http://code.google.com/p/csharlibformagexmlrpcapi/