2010-09-19 58 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