on 07-07-2016 2:30 AM
Hello Friends,
I have an Scenario ECC-->Web Service.
The target web service has RPC Style, only work the message request using "RPC Style" but message response to need transformation.
the problem is tag Multiref <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:Parametro" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
I need to idea for continue and resolve this problem.
thank you everybody.
kind regards
Luis M.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Luis,
Try using the multiRef message in the xsd. In the screenshot, you are using a MessageType.
Regards,
Mark
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Mark!
I'm afraid that the problem is not in WSDL. The problem is that web service returns data in RPC Encoded format, which has to be converted to Document Literal format.
"When the Document Literal style is used, the XML document that is created is in a tree structure that resembles a common XML document. The RPC Encoded style creates a flat XML document with cross-references from an element to its children."
Regards, Evgeniy.
Hi Mark!
Exactly .
With something like this:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<xsl:key name="multiref-by-id" match="multiRef" use="@id"/>
<xsl:template match="/">
<xsl:copy>
<xsl:apply-templates select="@*|*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[starts-with(@href, '#')]">
<xsl:copy>
<xsl:apply-templates select="@* |
key('multiref-by-id', substring-after(@href, '#'))/@* |
key('multiref-by-id', substring-after(@href, '#'))/node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@href[starts-with(., '#')] | multiRef[@id] | @soapenc:root"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Thus, we'll get response structure described in WSDL.
Regards, Evgeniy.
Hi Luis!
Other way might be to use SOAP Axis receiver adapter with payload extraction = SOAP Body Child.
Regards, Evgeniy.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Luis!
I would recommend to use XSLT mapping before your graphical mapping to move contents of <MultiRef> tag to Return tag contents.
By the way: do you get any error with this while performing end-to-end testing?
Wouldn't you please provide an example of response message in text format, not picture?
Regards, Evgeniy.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
87 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.