Jeff

I have moved on a bit.

I have only sent you part of the wsdl due to misunderstanding how the wsdl is used.

When the client requests each time the wsdl, I wondered why the wsdl that seemed to get generated only covered part of the wsdl.

I assumed that was how it was supposed to work.

I did try to find some other code in soaplib or suds that might be clearer about getting the wsdl but did not find what I wanted.

Now I have used the soapui project to check what was happening. The code that gets sent back is identical for suds and soapui, which is encouraging.

The full wsdl is below. If you need it as an attachment let me know.

Regards

John Aherne

<?xml version="1.0" encoding="UTF-8"?>
<definitions targetNamespace="CreateJob.CreateJob" name="CreateJob" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:tns="CreateJob.CreateJob" xmlns:typens="CreateJob.CreateJob" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/">
  <types>
    <schema targetNamespace="CreateJob.CreateJob" xmlns="http://www.w3.org/2001/XMLSchema">
      <xs:element name="JobArray" type="tns:JobArray"/>
      <xs:complexType name="SpecialInstructionArray">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:SpecialInstruction" name="SpecialInstruction"/>
        </xs:sequence>
      </xs:complexType>
      <xs:element name="SpecialInstruction" type="tns:SpecialInstruction"/>
      <xs:element name="cancel_job" type="tns:cancel_job"/>
      <xs:complexType name="StopArray">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:Stop" name="Stop"/>
        </xs:sequence>
      </xs:complexType>
      <xs:element name="amend_job" type="tns:amend_job"/>
      <xs:element name="amend_jobResponse" type="tns:amend_jobResponse"/>
      <xs:complexType name="GeoLocation">
        <xs:sequence>
          <xs:element name="town" minOccurs="0" type="xs:string"/>
          <xs:element name="latitude" minOccurs="0" type="xs:float"/>
          <xs:element name="postcode" minOccurs="0" type="xs:string"/>
          <xs:element name="longitude" minOccurs="0" type="xs:float"/>
          <xs:element name="address" minOccurs="0" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="get_jobResponse">
        <xs:sequence>
          <xs:element name="get_jobResult" type="tns:Job"/>
        </xs:sequence>
      </xs:complexType>
      <xs:element name="MeetingPointArray" type="tns:MeetingPointArray"/>
      <xs:element name="list_jobs" type="tns:list_jobs"/>
      <xs:complexType name="SpecialInstruction">
        <xs:sequence>
          <xs:element name="type" minOccurs="0" type="xs:string"/>
          <xs:element name="id" minOccurs="0" type="xs:integer"/>
          <xs:element name="value" minOccurs="0" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
      <xs:element name="get_job" type="tns:get_job"/>
      <xs:element name="SpecialInstructionArray" type="tns:SpecialInstructionArray"/>
      <xs:complexType name="cancel_job">
        <xs:sequence>
          <xs:element name="number" type="xs:integer"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="add_job">
        <xs:sequence>
          <xs:element name="job" type="tns:Job"/>
        </xs:sequence>
      </xs:complexType>
      <xs:element name="SpecialPlace" type="tns:SpecialPlace"/>
      <xs:element name="StopArray" type="tns:StopArray"/>
      <xs:element name="add_job" type="tns:add_job"/>
      <xs:element name="get_jobResponse" type="tns:get_jobResponse"/>
      <xs:element name="TerminalArray" type="tns:TerminalArray"/>
      <xs:element name="add_jobResponse" type="tns:add_jobResponse"/>
      <xs:complexType name="add_jobResponse">
        <xs:sequence>
          <xs:element name="add_jobResult" type="xs:integer"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="amend_jobResponse">
        <xs:sequence/>
      </xs:complexType>
      <xs:element name="ActorArray" type="tns:ActorArray"/>
      <xs:element name="Actor" type="tns:Actor"/>
      <xs:element name="cancel_jobResponse" type="tns:cancel_jobResponse"/>
      <xs:element name="list_jobsResponse" type="tns:list_jobsResponse"/>
      <xs:complexType name="Airport">
        <xs:sequence>
          <xs:element name="terminals" minOccurs="0" type="tns:TerminalArray"/>
          <xs:element name="location" minOccurs="0" type="tns:GeoLocation"/>
          <xs:element name="name" minOccurs="0" type="xs:string"/>
          <xs:element name="id" minOccurs="0" type="xs:integer"/>
        </xs:sequence>
      </xs:complexType>
      <xs:element name="Job" type="tns:Job"/>
      <xs:complexType name="MeetingPoint">
        <xs:sequence>
          <xs:element name="id" minOccurs="0" type="xs:integer"/>
          <xs:element name="location" minOccurs="0" type="tns:GeoLocation"/>
          <xs:element name="name" minOccurs="0" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="SpecialPlace">
        <xs:sequence>
          <xs:element name="name" minOccurs="0" type="xs:string"/>
          <xs:element name="cashCustomerAllowed" minOccurs="0" type="xs:boolean"/>
          <xs:element name="meetingPoints" minOccurs="0" type="tns:MeetingPointArray"/>
          <xs:element name="location" minOccurs="0" type="tns:GeoLocation"/>
          <xs:element name="type" minOccurs="0" type="xs:string"/>
          <xs:element name="id" minOccurs="0" type="xs:integer"/>
        </xs:sequence>
      </xs:complexType>
      <xs:element name="Stop" type="tns:Stop"/>
      <xs:complexType name="JobArray">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:Job" name="Job"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="MeetingPointArray">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:MeetingPoint" name="MeetingPoint"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="Actor">
        <xs:sequence>
          <xs:element name="id" minOccurs="0" type="xs:integer"/>
          <xs:element name="email" minOccurs="0" type="xs:string"/>
          <xs:element name="role" minOccurs="0" type="xs:string"/>
          <xs:element name="name" minOccurs="0" type="xs:string"/>
          <xs:element name="telephone" minOccurs="0" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
      <xs:element name="Airport" type="tns:Airport"/>
      <xs:complexType name="list_jobs">
        <xs:sequence/>
      </xs:complexType>
      <xs:complexType name="cancel_jobResponse">
        <xs:sequence/>
      </xs:complexType>
      <xs:complexType name="Stop">
        <xs:sequence>
          <xs:element name="note" minOccurs="0" type="xs:string"/>
          <xs:element name="meetingPoint" minOccurs="0" type="xs:string"/>
          <xs:element name="airportStop" minOccurs="0" type="xs:boolean"/>
          <xs:element name="specialPlace" minOccurs="0" type="tns:SpecialPlace"/>
          <xs:element name="arrivalFrom" minOccurs="0" type="xs:string"/>
          <xs:element name="terminal" minOccurs="0" type="tns:Terminal"/>
          <xs:element name="airport" minOccurs="0" type="tns:Airport"/>
          <xs:element name="location" minOccurs="0" type="tns:GeoLocation"/>
          <xs:element name="operationType" minOccurs="0" type="xs:integer"/>
          <xs:element name="id" minOccurs="0" type="xs:integer"/>
          <xs:element name="flightNo" minOccurs="0" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="TerminalArray">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:Terminal" name="Terminal"/>
        </xs:sequence>
      </xs:complexType>
      <xs:element name="MeetingPoint" type="tns:MeetingPoint"/>
      <xs:complexType name="get_job">
        <xs:sequence>
          <xs:element name="number" type="xs:integer"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ActorArray">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:Actor" name="Actor"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="amend_job">
        <xs:sequence>
          <xs:element name="job" type="tns:Job"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="Job">
        <xs:sequence>
          <xs:element name="specialInstructions" minOccurs="0" type="tns:SpecialInstructionArray"/>
          <xs:element name="asSoonAsPossible" minOccurs="0" type="xs:boolean"/>
          <xs:element name="callerName" minOccurs="0" type="xs:string"/>
          <xs:element name="lastDrop" minOccurs="0" type="xs:string"/>
          <xs:element name="jobDate" minOccurs="0" type="xs:dateTime"/>
          <xs:element name="callerPhone" minOccurs="0" type="xs:string"/>
          <xs:element name="number" minOccurs="0" type="xs:integer"/>
          <xs:element name="stops" minOccurs="0" type="tns:StopArray"/>
          <xs:element name="pinCode" minOccurs="0" type="xs:string"/>
          <xs:element name="delay" minOccurs="0" type="xs:string"/>
          <xs:element name="cancelledOnArrival" minOccurs="0" type="xs:boolean"/>
          <xs:element name="actors" minOccurs="0" type="tns:ActorArray"/>
          <xs:element name="firstPickUp" minOccurs="0" type="xs:string"/>
          <xs:element name="cancelled" minOccurs="0" type="xs:boolean"/>
          <xs:element name="mainPassenger" minOccurs="0" type="xs:string"/>
          <xs:element name="price" minOccurs="0" type="xs:float"/>
          <xs:element name="callerEmail" minOccurs="0" type="xs:string"/>
          <xs:element name="id" minOccurs="0" type="xs:integer"/>
          <xs:element name="serviceCode" minOccurs="0" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="list_jobsResponse">
        <xs:sequence>
          <xs:element name="list_jobsResult" type="tns:JobArray"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="Terminal">
        <xs:sequence>
          <xs:element name="location" minOccurs="0" type="tns:GeoLocation"/>
          <xs:element name="meetingPoint" minOccurs="0" type="xs:string"/>
          <xs:element name="name" minOccurs="0" type="xs:string"/>
          <xs:element name="id" minOccurs="0" type="xs:integer"/>
        </xs:sequence>
      </xs:complexType>
      <xs:element name="GeoLocation" type="tns:GeoLocation"/>
      <xs:element name="Terminal" type="tns:Terminal"/>
    </schema>
  </types>
  <message name="add_job">
    <part name="add_job" element="tns:add_job"/>
  </message>
  <message name="add_jobResponse">
    <part name="add_jobResponse" element="tns:add_jobResponse"/>
  </message>
  <message name="amend_job">
    <part name="amend_job" element="tns:amend_job"/>
  </message>
  <message name="amend_jobResponse"/>
  <message name="cancel_job">
    <part name="cancel_job" element="tns:cancel_job"/>
  </message>
  <message name="cancel_jobResponse"/>
  <message name="get_job">
    <part name="get_job" element="tns:get_job"/>
  </message>
  <message name="get_jobResponse">
    <part name="get_jobResponse" element="tns:get_jobResponse"/>
  </message>
  <message name="list_jobs"/>
  <message name="list_jobsResponse">
    <part name="list_jobsResponse" element="tns:list_jobsResponse"/>
  </message>
  <portType name="CreateJob">
    <operation name="add_job" parameterOrder="add_job">
      <documentation/>
      <input name="add_job" message="tns:add_job"/>
      <output name="add_jobResponse" message="tns:add_jobResponse"/>
    </operation>
    <operation name="amend_job" parameterOrder="amend_job">
      <documentation/>
      <input name="amend_job" message="tns:amend_job"/>
      <output name="amend_jobResponse" message="tns:amend_jobResponse"/>
    </operation>
    <operation name="cancel_job" parameterOrder="cancel_job">
      <documentation/>
      <input name="cancel_job" message="tns:cancel_job"/>
      <output name="cancel_jobResponse" message="tns:cancel_jobResponse"/>
    </operation>
    <operation name="get_job" parameterOrder="get_job">
      <documentation/>
      <input name="get_job" message="tns:get_job"/>
      <output name="get_jobResponse" message="tns:get_jobResponse"/>
    </operation>
    <operation name="list_jobs" parameterOrder="list_jobs">
      <documentation/>
      <input name="list_jobs" message="tns:list_jobs"/>
      <output name="list_jobsResponse" message="tns:list_jobsResponse"/>
    </operation>
  </portType>
  <plnk:partnerLinkType name="CreateJob">
    <plnk:role name="CreateJob">
      <plnk:portType name="tns:CreateJob"/>
    </plnk:role>
  </plnk:partnerLinkType>
  <binding name="CreateJob" type="tns:CreateJob">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="add_job">
      <soap:operation soapAction="add_job" style="document"/>
      <input name="add_job">
        <soap:body use="literal"/>
      </input>
      <output name="add_jobResponse">
        <soap:body use="literal"/>
      </output>
    </operation>
    <operation name="amend_job">
      <soap:operation soapAction="amend_job" style="document"/>
      <input name="amend_job">
        <soap:body use="literal"/>
      </input>
      <output name="amend_jobResponse">
        <soap:body use="literal"/>
      </output>
    </operation>
    <operation name="cancel_job">
      <soap:operation soapAction="cancel_job" style="document"/>
      <input name="cancel_job">
        <soap:body use="literal"/>
      </input>
      <output name="cancel_jobResponse">
        <soap:body use="literal"/>
      </output>
    </operation>
    <operation name="get_job">
      <soap:operation soapAction="get_job" style="document"/>
      <input name="get_job">
        <soap:body use="literal"/>
      </input>
      <output name="get_jobResponse">
        <soap:body use="literal"/>
      </output>
    </operation>
    <operation name="list_jobs">
      <soap:operation soapAction="list_jobs" style="document"/>
      <input name="list_jobs">
        <soap:body use="literal"/>
      </input>
      <output name="list_jobsResponse">
        <soap:body use="literal"/>
      </output>
    </operation>
  </binding>
  <service name="CreateJob">
    <port name="CreateJob" binding="tns:CreateJob">
      <soap:address location="http://localhost:7789/CreateJob?wsdl"/>
    </port>
  </service>
</definitions>