2010-09-19 5 views
2

la version Magento 1.4.1.1API Magento XMLRPC échoue en utilisant l'opérateur finset

Je suis en train de récupérer une liste de produits filtrés pour un site Web spécifique en utilisant l'API XMLRPC (méthode catalog_product.list d'appel). Le serveur renvoie "erreur inconnue". Je peux appeler cette même méthode et filtrer par statut, sku, etc. Mais chaque fois que j'essaie de filtrer sur un champ qui peut contenir plusieurs valeurs (par exemple sites Web, catégories, category_ids), j'obtiens l'erreur inconnue. J'utilise C# et l'excellente bibliothèque xmlrpc.net de Charles Cook. J'ai capturé le XML envoyé au serveur comme indiqué ci-dessous. Quelqu'un peut-il donner un aperçu de la raison pour laquelle cela se produit?

Cela fonctionne:

 
<?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> 

Cela ne veut pas:

 
<?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

On dirait que ce doit être un problème avec l'API de base Magento. J'ai maintenant testé l'appel en utilisant l'API v2_soap, et j'ai la même réponse "erreur inconnue" du serveur. – DString

Répondre

0

Pouvez-vous utiliser xdebug et votre IDE pour parcourir la demande et de suivre vers le bas quelle classe est la manipuler? Vous pouvez peut-être lire la source à traquer si les opérateurs de conditions multiples ont besoin d'une syntaxe particulière.

EDIT

Je me rappelle que XSLT ne crée pas un tableau s'il y a un seul nœud au lieu de frères et sœurs multiples. Donc, si finset ou d'autres opérateurs de conditions multiples attendent un tableau, et que vous passez un seul noeud sous <value>, il est possible qu'il soit reçu en tant que scalaire et que l'appel de fonction échoue? Peut-être essayer d'envoyer <value><string>1</string><string>2</string></value> pour tester ma théorie?

+0

Excellente idée! Malheureusement, j'ai toujours la même erreur. – DString

0

Vous pouvez essayer ce, il peut offrir plus d'exemples comme guide à votre problème: http://code.google.com/p/csharlibformagexmlrpcapi/

+0

@BOOMER Merci pour la suggestion. J'ai commencé à utiliser l'EZ Newsletter API Nov-2010. Malheureusement, je reçois toujours la même erreur. 'code' XmlRpcStruct filterOn = nouveau XmlRpcStruct(); XmlRpcStruct filterParams = new XmlRpcStruct(); filterParams.Add ("finset", nouvelle chaîne [] {"melodies"}); // ID de magasin filterOn.Add ("websites", filterParams); Produit [] myProducts = Product.List (apiUrl, sessionId, nouvel objet [] {filterOn}); 'code' Résultats dans' code' Le serveur a renvoyé une exception de défaut: [0] Inconnu Erreur 'code' – DString

+0

Je sais que c'est redondant mais il faut demander si les modules PHP SOAP et SimpleXML sont installés et fonctionnent correctement? http://www.magentocommerce.com/knowledge-base/entry/how-do-i-know-if-my-server-is-compatible-with-magento et http://www.magentocommerce.com/system- exigences – B00MER