tyro
tyro

Reputation: 795

Why there are different request definition for one wsdl

I have been provided a WSDL by client at the beginning of the project, I ended up creating a request and response objects for given WSDL using SOAP UI, where the request object would look as follows,

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:def="http://DefaultNamespace">
   <soapenv:Header/>
   <soapenv:Body>
      <def:someOperation soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <in0 xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">SOME_DATA</in0>
      </def:someOperation>
   </soapenv:Body>
</soapenv:Envelope>

But when the actual request coming from the production environment for the same wsdl is,

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
    <someOperation xmlns="urn:SOMEService">
    <in0>SOME_DATA</in0>
    </someOperation>
</soap:Body>
</soap:Envelope>

If you observed the name spaces are the same but it does has difference for names like in 1st request its <soapenv:Envelope and same in the 2nd request is <soap:Envelope in each node of xml, the definition of operation is also different in both the request in 1st it is,

<def:someOperation soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <in0 xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">SOME_DATA</in0>
      </def:someOperation>

and in 2nd it is,

<someOperation xmlns="urn:SOMEService">
    <in0>SOME_DATA</in0>
    </someOperation>

I do not know why the interpretation is different, and is it safe to have to change from 1st to 2nd. IN both the cases actual operation is working fine I do not have any issues with that, it is just cant able to figure out reason of difference.

Could somebody please assist me with this or any direction to a document which could clarify my doubt would be great.

Upvotes: 0

Views: 204

Answers (1)

Red Boy
Red Boy

Reputation: 5739

it does has difference for names like in 1st request its <soapenv:Envelope and same in the 2nd request is <soap:Envelope in each node of xml

Here soapenv and soap are local prefix names of namespace=http://schemas.xmlsoap.org/soap/envelope/. Hence, logically both are same and has no difference.

the definition of operation is also different in both the request in 1st v/s 2nd

In case of 1st, def:someOperation XML nodes belongs to namespace = xmlns:def="http://DefaultNamespace"

And in 2nd case, name space "urn:SOMEService" is directly defined with XML Nodes So if DefaultNamespace is exactly same as SOMEService, the it means both of the XML Operation XMLs are same.

Hence, soapenv v/s soap are same in your case.

Operations, you could conclude based on actual value of SOMEService v/s DefaultNamespace.

Hope it helps.

Upvotes: 1

Related Questions