2010-09-19 79 views
2

的Magento版本1.4.1.1Magento的XMLRPC API失败使用finset操作

我试图找回过滤使用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> 
+0

看起来它必须与Magento的核心API的问题。我现在使用v2_soap api测试了这个调用,并且从服务器获得了相同的“未知错误”响应。 – DString 2010-09-21 22:28:49

回答

0

你可以使用了XDebug和你的IDE来逐步的请求,并跟踪其类处理它?如果多个条件运算符需要特定的语法,您可能能够阅读源以追踪。

EDIT

记得,如果有一个单节点而不是多个兄弟姐妹XSLT不会建立一个数组。因此,如果finset或其他多个条件运算符正在等待一个数组,并且您正在传递一个单个节点在<value>下,那么可能是以标量形式接收数据,因此函数调用失败?也许尝试发送<value><string>1</string><string>2</string></value>来测试我的理论?

+0

好主意!不幸的是,我仍然有同样的错误。 – DString 2010-09-20 22:48:49

0

你可能想试试这个,它可以提供更多的例子为指导,以您的问题: http://code.google.com/p/csharlibformagexmlrpcapi/

+0

@BOOMER感谢您的建议。我开始使用EZ通讯API Nov-2010。不幸的是,我仍然遇到同样的错误。 'code' XmlRpcStruct filterOn = new XmlRpcStruct(); XmlRpcStruct filterParams = new XmlRpcStruct(); filterParams.Add(“finset”,new string [] {“melodies”}); // store ID filterOn.Add(“websites”,filterParams); Product [] myProducts = Product.List(apiUrl,sessionId,new object [] {filterOn}); '代码'结果'代码'服务器返回一个错误异常:[0]未知错误代码' – DString 2011-05-03 04:50:40

+0

我知道它的冗余,但不得不问的SOAP和SimpleXML PHP模块安装和工作正常吗? http://www.magentocommerce.com/knowledge-base/entry/how-do-i-know-if-my-server-is-compatible-with-magento和http://www.magentocommerce.com/system-要求 – B00MER 2011-05-03 20:48:21