My application in Python (2.7) must use the client to use the SOAP web service as described in the WSDL (generated by Magento (1.7.0) and published at the end).
Suds (4.0) was chosen for this task when I tried to connect to this code:
from suds.client import Client client = Client(url)
I got a TypeNotFound error due to the well-known issue described here https://fedorahosted.org/suds/wiki/Documentation#FIXINGBROKENSCHEMAs
Then I changed my code to:
from suds.client import Client from suds.xsd.doctor import Import, ImportDoctor
However, now a new exception has occurred:
File "/home/david.gonzalez/.virtualenvs/testlib/lib/python2.7/site- packages/suds/mx/literal.py", line 86, in start raise TypeNotFound(content.tag) suds.TypeNotFound: Type not found: 'args'
I do not understand why it cannot find the type "args" if it is explicitly specified in wsdl:
<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:typens="urn:Magento" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Magento" targetNamespace="urn:Magento"> <types> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento"> <complexType name="FixedArray"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:anyType[]" /> </restriction> </complexContent> </complexType> </schema> </types> <message name="call"> <part name="sessionId" type="xsd:string" /> <part name="resourcePath" type="xsd:string" /> <part name="args" type="xsd:anyType" /> </message> <message name="callResponse"> <part name="callReturn" type="xsd:anyType" /> </message> <message name="multiCall"> <part name="sessionId" type="xsd:string" /> <part name="calls" type="typens:FixedArray" /> <part name="options" type="xsd:anyType" /> </message> <message name="multiCallResponse"> <part name="multiCallReturn" type="typens:FixedArray" /> </message> <message name="endSession"> <part name="sessionId" type="xsd:string" /> </message> <message name="endSessionResponse"> <part name="endSessionReturn" type="xsd:boolean" /> </message> <message name="login"> <part name="username" type="xsd:string" /> <part name="apiKey" type="xsd:string" /> </message> <message name="loginResponse"> <part name="loginReturn" type="xsd:string" /> </message> <message name="resources"> <part name="sessionId" type="xsd:string" /> </message> <message name="resourcesResponse"> <part name="resourcesReturn" type="typens:FixedArray" /> </message> <message name="globalFaults"> <part name="sessionId" type="xsd:string" /> </message> <message name="globalFaultsResponse"> <part name="globalFaultsReturn" type="typens:FixedArray" /> </message> <message name="resourceFaults"> <part name="resourceName" type="xsd:string" /> <part name="sessionId" type="xsd:string" /> </message> <message name="resourceFaultsResponse"> <part name="resourceFaultsReturn" type="typens:FixedArray" /> </message> <message name="startSession" /> <message name="startSessionResponse"> <part name="startSessionReturn" type="xsd:string" /> </message> <portType name="Mage_Api_Model_Server_HandlerPortType"> <operation name="call"> <documentation>Call api functionality</documentation> <input message="typens:call" /> <output message="typens:callResponse" /> </operation> <operation name="multiCall"> <documentation>Multiple calls of resource functionality</documentation> <input message="typens:multiCall" /> <output message="typens:multiCallResponse" /> </operation> <operation name="endSession"> <documentation>End web service session</documentation> <input message="typens:endSession" /> <output message="typens:endSessionResponse" /> </operation> <operation name="login"> <documentation>Login user and retrive session id</documentation> <input message="typens:login" /> <output message="typens:loginResponse" /> </operation> <operation name="startSession"> <documentation>Start web service session</documentation> <input message="typens:startSession" /> <output message="typens:startSessionResponse" /> </operation> <operation name="resources"> <documentation>List of available resources</documentation> <input message="typens:resources" /> <output message="typens:resourcesResponse" /> </operation> <operation name="globalFaults"> <documentation>List of resource faults</documentation> <input message="typens:globalFaults" /> <output message="typens:globalFaultsResponse" /> </operation> <operation name="resourceFaults"> <documentation>List of global faults</documentation> <input message="typens:resourceFaults" /> <output message="typens:resourceFaultsResponse" /> </operation> </portType> <binding name="Mage_Api_Model_Server_HandlerBinding" type="typens:Mage_Api_Model_Server_HandlerPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> <operation name="call"> <soap:operation soapAction="urn:Mage_Api_Model_Server_HandlerAction" /> <input> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> <operation name="multiCall"> <soap:operation soapAction="urn:Mage_Api_Model_Server_HandlerAction" /> <input> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> <operation name="endSession"> <soap:operation soapAction="urn:Mage_Api_Model_Server_HandlerAction" /> <input> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> <operation name="login"> <soap:operation soapAction="urn:Mage_Api_Model_Server_HandlerAction" /> <input> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> <operation name="startSession"> <soap:operation soapAction="urn:Mage_Api_Model_Server_HandlerAction" /> <input> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> <operation name="resources"> <soap:operation soapAction="urn:Mage_Api_Model_Server_HandlerAction" /> <input> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> <operation name="globalFaults"> <soap:operation soapAction="urn:Mage_Api_Model_Server_HandlerAction" /> <input> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> <operation name="resourceFaults"> <soap:operation soapAction="urn:Mage_Api_Model_Server_HandlerAction" /> <input> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body namespace="urn:Magento" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> </binding> <service name="MagentoService"> <port name="Mage_Api_Model_Server_HandlerPort" binding="typens:Mage_Api_Model_Server_HandlerBinding"> <soap:address location="http://127.0.0.1/magento/index.php/api/soap/index/" /> </port> </service> </definitions>
My feeling was a mistake with the namespace name, however I already tried this thread with the same results: SOAP suds and a terrible error Type of error not found
source share