[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