TonyMarston
15 years agoNew Contributor
Request elements are namespace qualified in error
I noticed this error in SoapUI 3.5, and it still exists in SoapUI 3.6 Beta 2.
I am using a 3rd party WSDL which uses the defaults of elementFormDefault="unqualified" and attributeFormDefault="unqualified". This is supposed to mean that on all soap requests only the first element in the body need be namespace-qualified, yet when I view a request it shows a subordinate element has also been qualified when it should not have been. Instead of
it shows
The element CaseReference does not have the form="qualified" attribute to override the default setting, therefore it should not be qualified.
This is causing a problem as my software generates soap requests using the specifications in the WSDL file which state that only the top-level element in the soap body need be qualified, but the soap server is rejecting the request because a child element is not qualified.
If I have generated a request which is valid according to the WSDL specifications then it should not be rejected.
The only way I can get around this is to use a local patched copy of the WSDL file in which I have added form="qualified" to the affected elements, but this means that I have to create a new patched file each time they change their WSDL.
I am using a 3rd party WSDL which uses the defaults of elementFormDefault="unqualified" and attributeFormDefault="unqualified". This is supposed to mean that on all soap requests only the first element in the body need be namespace-qualified, yet when I view a request it shows a subordinate element has also been qualified when it should not have been. Instead of
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:flt="http://www.lagan.com/wsdl/FLTypes">
<soapenv:Header/>
<soapenv:Body>
<flt:FWTCaseEformNew>
<CaseReference>?</CaseReference>
<EformName>?</EformName>
<!--Optional:-->
<URL>?</URL>
</flt:FWTCaseEformNew>
</soapenv:Body>
</soapenv:Envelope>
it shows
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:flt="http://www.lagan.com/wsdl/FLTypes">
<soapenv:Header/>
<soapenv:Body>
<flt:FWTCaseEformNew>
<flt:CaseReference>?</flt:CaseReference>
<EformName>?</EformName>
<!--Optional:-->
<URL>?</URL>
</flt:FWTCaseEformNew>
</soapenv:Body>
</soapenv:Envelope>
The element CaseReference does not have the form="qualified" attribute to override the default setting, therefore it should not be qualified.
This is causing a problem as my software generates soap requests using the specifications in the WSDL file which state that only the top-level element in the soap body need be qualified, but the soap server is rejecting the request because a child element is not qualified.
If I have generated a request which is valid according to the WSDL specifications then it should not be rejected.
The only way I can get around this is to use a local patched copy of the WSDL file in which I have added form="qualified" to the affected elements, but this means that I have to create a new patched file each time they change their WSDL.