Skip to content

Incorrect SOAP request generated with extended xml-type #1461

Open

Description

@dyxenator

I described the problem in this discussion: #1460

Im generating a soap request with factories from the types in the WSDL.

The generated request is faulty containing a credentials tag twice:

<?xml version='1.0' encoding='utf-8'?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
 <soap-env:Body>
  <ns0:GetDeptListRequest xmlns:ns0="http://atoss.com/ses/services/masterdata/dept-1.0">
   <ns1:Credentials xmlns:ns1="http://atoss.com/ses/services/masterdata/types-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns1:ListServiceRequest">
   <ns1:Credentials>
    <ns1:Logonid>xxx</ns1:Logonid>
    <ns1:Clientno>xxx</ns1:Clientno>
    <ns1:Password>xxx</ns1:Password>
   </ns1:Credentials>
   </ns1:Credentials> 
  </ns0:GetDeptListRequest>
 </soap-env:Body>
</soap-env:Envelope>

Notice the duplicate Credentials tags.

Also notice that the first Credentials open tag has the type ListServiceRequest:

<ns1:Credentials xmlns:ns1="bla" xmlns:xsi="bla" xsi:type="ns1:ListServiceRequest">

This is clearly a bug.

The request generated from SOAPUI looks like this and works just fine:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
                                xmlns:dept="http://atoss.com/ses/services/masterdata/dept-1.0" 
                                xmlns:typ="http://atoss.com/ses/services/masterdata/types-1.0">
   <soapenv:Header/>
   <soapenv:Body>
      <dept:GetDeptListRequest>
         <typ:Credentials>
            <typ:Logonid>xx</typ:Logonid>
            <typ:Clientno>xx</typ:Clientno>
            <typ:Password>xxx</typ:Password>
         </typ:Credentials>
      </dept:GetDeptListRequest>
   </soapenv:Body>
</soapenv:Envelope>

I thinks it has to do with the GetDeptListRequest being an extension of the ListServiceRequest type in the WSDL.

<xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="GetDeptListRequest">
  <xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:complexContent xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:extension xmlns:xs="http://www.w3.org/2001/XMLSchema" base="wstypes:ListServiceRequest"/>
   </xs:complexContent>
 </xs:complexType>
</xs:element>

Using zeep 4.3.1

WSDL: see attachment to the second post in this discussion: #1460

Minimal code:

from zeep import Client, Settings
from zeep.transports import Transport
from requests.auth import HTTPBasicAuth
from requests import Session


WSDL_URL = "https://ases-abn.example.com/SES/services/masterdata/dept-1.0.wsdl"
USER = "xxx"
PWD = "yyy"
CLIENTNO = '123'
 
# Override post to store xml request and response
# see https://github.com/mvantellingen/python-zeep/issues/603
class Transport(Transport):
    def post(self, address, message, headers):
        self.xml_request = message.decode('utf-8')
        print(f"XML Request: {self.xml_request}")
        response = super().post(address, message, headers)
        self.response = response
        print(f"XML Response: {self.response}")

        return response


session = Session()
session.auth = HTTPBasicAuth(USER, PWD)
client = Client(wsdl =WSDL_URL,
                transport = Transport(session=session)# with basic auth
                )

#print(client.wsdl.dump())


credentialsType = client.get_type('ns1:CredentialsType')
listServiceRequest = client.get_type('ns1:ListServiceRequest')

factory = client.type_factory('ns1')

credentials = factory.CredentialsType(
                    Logonid=USER,
                    Password=PWD,
                    Clientno=CLIENTNO
                    )
request_data = factory.ListServiceRequest(
                    Credentials = credentials
                    )

response = client.service.GetDeptList(request_data)
#print(response.content)

Activity

  1. dyxenator commented on May 20, 2025

    @dyxenator
    Author

    Error probably happens when merging around here

  2. changed the title [-]Incorrect SOAP request generated[/-] [+]Incorrect SOAP request generated with extended xml-type[/+] on May 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions