Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

kdsoap client for magento soap api



  • Hello I'm trying to connect kdsoap to magento api, but the examples of kdsoap are not very helpful.
    The first problem is that the magento api does not provide a call to Login, for example I don't know if I can do this:

        KDSoapMessage response = client.call(QLatin1String("Login"), message);
    
    

    This is the full code:

        const QString endPoint = QLatin1String("https://magentohost.com/api/soap/?wsdl");
        const QString messageNamespace = QLatin1String("https://magentohost.com/api/soap/");
        KDSoapClientInterface client(endPoint, messageNamespace);
        KDSoapMessage message;
        message.addArgument(QLatin1String("apiUser"), "user");
        message.addArgument(QLatin1String("apiKey"), "key");
        KDSoapMessage response = client.call(QLatin1String("Login"), message);
        const QString sessionId = response.arguments()[0].value().toString();
        KDSoapMessage header;
        header.addArgument(QLatin1String("SessionId"), sessionId);
        client.setHeader(QLatin1String("SessionHeader"), header);
    
        if (response.isFault())
            printf("%s\n", qPrintable(response.faultAsString()));
        else
            printf("%s\n", qPrintable(response.arguments()[0].value().toString()));
    

    Runnig this code I get these errors:

    qt.network.ssl: QSslSocket: cannot resolve SSLv3_client_method
    qt.network.ssl: QSslSocket: cannot resolve SSLv3_server_method
    
    Fault code 6: SSL handshake failed
    
    

    What's the problem?



  • OK I had problem with the subdomain so I tried with the main domain and I get this response:

    qt.network.ssl: QSslSocket: cannot resolve SSLv3_client_method
    qt.network.ssl: QSslSocket: cannot resolve SSLv3_server_method
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions xmlns:typens="urn:Magento" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
        xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"
        name="Magento" targetNamespace="urn:Magento">
        <types>
            <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento">
    <!--            <import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/" />-->
                <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="https://magentohost.com/index.php/api/soap/index/" />
            </port>
        </service>
    </definitions>
    
    Fault code 2: XML error: [4:49] Invalid SOAP Message, Envelope expected
                                                         
    
    

  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Did you install OpenSSL on your system ?


Log in to reply