Hi all,

I'm writing a client with Axis 1.4 to a web service, but the generated SOAP
request is not matching with the one expected by the web service.

Could you please help me to edit the WSDL file (saved into my local disk
from the server) so that I can generate the stubs to build the expected SOAP
requests. I have posted the WSDL, currently generated SOAP request and the
expected SOAP request below.

If WSDL editing is not the way to get this done, please suggest me some
other way. I'm really stuck here.

Thanks in advance.

Thusa.



This is the avaialble WSDL file.
--------------------------------------------------------------
 <?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:typens="urn:Company" 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="Company" targetNamespace="urn:Company">
  <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="login">
    <part name="username" type="xsd:string"/>
    <part name="apiKey" type="xsd:string"/>
  </message>
  <message name="loginResponse">
    <part name="loginReturn" type="xsd:string"/>
  </message>

  <portType name="Comp_Api_Model_Server_HandlerPortType">
    <operation name="call">
      <documentation>Call api functionality</documentation>
      <input message="typens:call"/>
      <output message="typens:callResponse"/>
    </operation>
    <operation name="login">
      <documentation>Login user and retrive session id</documentation>
      <input message="typens:login"/>
      <output message="typens:loginResponse"/>
    </operation>
  </portType>

  <binding name="Comp_Api_Model_Server_HandlerBinding"
type="typens:Comp_Api_Model_Server_HandlerPortType">
    <soap:binding style="rpc" transport="
http://schemas.xmlsoap.org/soap/http"/<http://schemas.xmlsoap.org/soap/http%22/>
>
    <operation name="call">
      <soap:operation soapAction="urn:Comp_Api_Model_Server_HandlerAction"/>
      <input>
        <soap:body namespace="urn:Company" use="encoded" encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/"/<http://schemas.xmlsoap.org/soap/encoding/%22/>
>
      </input>
      <output>
        <soap:body namespace="urn:Company" use="encoded" encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/"/<http://schemas.xmlsoap.org/soap/encoding/%22/>
>
      </output>
    </operation>
    <operation name="login">
      <soap:operation soapAction="urn:Comp_Api_Model_Server_HandlerAction"/>
      <input>
        <soap:body namespace="urn:Company" use="encoded" encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/"/<http://schemas.xmlsoap.org/soap/encoding/%22/>
>
      </input>
      <output>
        <soap:body namespace="urn:Company" use="encoded" encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/"/<http://schemas.xmlsoap.org/soap/encoding/%22/>
>
      </output>
    </operation>
  </binding>
  <service name="CompanyService">
    <port name="Comp_Api_Model_Server_HandlerPort"
binding="typens:Comp_Api_Model_Server_HandlerBinding">
      <soap:address location="
http://localhost/Company/index.php/api/index/index/"/<http://localhost/Company/index.php/api/index/index/%22/>
>
    </port>
  </service>
</definitions>
 --------------------------------------------------------------

Currently generated SOAP request is as follows.
 --------------------------------------------------------------
 <?xml version="1.0" encoding="UTF-8"?>
   <soapenv:Envelope xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsd="
http://www.w3.org/2001/XMLSchema"; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance";>
      <soapenv:Body>
         <ns1:call soapenv:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/"; xmlns:ns1="urn:Company">
            <sessionId
xsi:type="xsd:string">1vp029hcubiiven8cr1s21nke2</sessionId>
            <resourcePath
xsi:type="xsd:string">customer.create</resourcePath>
            <args soapenc:arrayType="xsd:anyType[1]"
xsi:type="soapenc:Array" xmlns:soapenc="
http://schemas.xmlsoap.org/soap/encoding/";>
               <args href="#id0"/>
            </args>
         </ns1:call>
         <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/"; xsi:type="ns2:Map"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; xmlns:ns2="
http://xml.apache.org/xml-soap";>
            <item>
               <key xsi:type="soapenc:string">email</key>
               <value xsi:type="soapenc:string">[EMAIL PROTECTED]</value>
            </item>
            <item>
               <key xsi:type="soapenc:string">lastname</key>
               <value xsi:type="soapenc:string">myLastName</value>
            </item>
            <item>
               <key xsi:type="soapenc:string">firstname</key>
               <value xsi:type="soapenc:string">MyFirstName</value>
            </item>
         </multiRef>
      </soapenv:Body>
   </soapenv:Envelope>
 --------------------------------------------------------------

But the server expects a SOAP request as follows. ( I found this SOAP
request from one of their sample clients done with PHP).
 --------------------------------------------------------------
 <?xml version="1.0" encoding="UTF-8"?>
      <SOAP-ENV:Envelope xmlns:SOAP-ENV="
http://schemas.xmlsoap.org/soap/envelope/"; xmlns:ns1="urn:Company"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"; xmlns:ns2="
http://xml.apache.org/xml-soap"; xmlns:SOAP-ENC="
http://schemas.xmlsoap.org/soap/encoding/"; SOAP-ENV:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/";>
         <SOAP-ENV:Body>
            <ns1:call>
               <sessionId
xsi:type="xsd:string">mj3kj5rr2df0b1fq5kmputmr54</sessionId>
               <resourcePath
xsi:type="xsd:string">customer.create</resourcePath>
               <args SOAP-ENC:arrayType="ns2:Map[1]"
xsi:type="SOAP-ENC:Array">
                  <item xsi:type="ns2:Map">
                     <item>
                        <key xsi:type="xsd:string">firstname</key>
                        <value xsi:type="xsd:string">myFirstName</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">lastname</key>
                        <value xsi:type="xsd:string">myLastName</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">email</key>
                        <value xsi:type="xsd:string">[EMAIL PROTECTED]
</value>
                     </item>
                  </item>
               </args>
            </ns1:call>
         </SOAP-ENV:Body>
      </SOAP-ENV:Envelope>
 --------------------------------------------------------------

Reply via email to