[Xml-compile] Enforcing encodingStyle attribute?

Mark Overmeer mark at overmeer.net
Tue Feb 16 20:21:47 GMT 2016


* Heiko Jansen (jansen at hbz-nrw.de) [160216 16:34]:
> For some reason, the commands to create and destroy a session are using the 
> document/literal encoding style while the other commands have to be send as 
> rpc-encoded messages.

Juk!  I disgust RPC-style.

> Session creation and destruction work fine.
> We´ve already found out that we have to add "use 
> XML::Compile::SOAP11::Encoding;" and that we have to create a different 
> XML::Compile::WSDL11 object to feed the WSDL files for the other commands 
> to.

You only need one WSDL11 object per program.

> JAXRPCTIE01: Ausnahmefehler beim Bearbeiten der Anforderung: Unerwarteter 
> Kodierungsstil: erwartet=http://schemas.xmlsoap.org/soap/encoding/, tats
> \xC3\xA4chlich=
> 
> which roughly translates to
> 
> "Exception: unexpected encoding style: expected=http://schemas.xmlsoap.org/
> soap/encoding/, got="

It should select that automatically.  (I speak/understand German, but
don't ask me to write it)

> The request message indeed doesn´t contain an "encodingStyle" attribute 
> anywhere.
> 
> The WSDL declares the usage of the encoding style:
> 
> -- snip --
> <binding name="XYZShowDataInterfaceBinding" type="tns:XYZShowDataInterface">
>   <soap:binding
>     transport="http://schemas.xmlsoap.org/soap/http"
>     style="rpc"/>
>   <operation name="executeXYZShowData">
>     <soap:operation soapAction=""/>
>     <input>
>       <soap:body
>         encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>         use="encoded"
>         namespace="urn:xyz"/>
>     </input>
> -- / snip --
> 
> The "Envelope" element that´s currently generated looks like this:
> 
> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/
> envelope/">
> 
> If I manually change that to
> 
> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/
> envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/
> encoding/">
> 
> and re-submit the modified message using lwp-request the server accepts the 
> request.

The SOAP11 schema explicitly forbids this "encodingStyle" attribute:

  <xs:element name="Envelope" type="tns:Envelope"/>
  <xs:complexType name="Envelope">
    <xs:sequence>...</xs:sequence>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

Also, you specify the SOAP1.1 namespace as encodingStyle, which is
definitively incorrect.

> Until now I´ve been unable to find out how I´m supposed to enforce the 
> presence of the missing attribute.
> Any suggestions?

I think there is something else which troubles this.  My RPC support
is a but shaky: gladly nearly no-one uses that anymore.

If you can send me a small script which demonstrates your problem, I'll
have a look at it.
-- 
Regards,
               MarkOv

------------------------------------------------------------------------
       Mark Overmeer MSc                                MARKOV Solutions
       Mark at Overmeer.net                          solutions at overmeer.net
http://Mark.Overmeer.net                   http://solutions.overmeer.net




More information about the Xml-compile mailing list