we have developed an adapter module to base64 decode and unzip the contents of an xml tag. We have successfully tested it with a soap sender channel using native soap protocol.
When trying to use it in a scenario ERP Proxy -> PI Soap Adapter (configured to expect XI 3.0 protocol) we encounter the following problem:
The payload of the message is (in the module you get the payload with message.getMainPayload().getContent() ):
<sap:Manifest xmlns:SOAP='http://schemas.xmlsoap.org/soap/envelope/' xmlns:sap='http://sap.com/xi/XI/Message/30' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:wsu='http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd' wsu:Id='wsuid-manifest-5CABE13F5C59AB7FE10000000A1551F7'> <sap:Payload xlink:type='simple' xlink:href='cid:payload-4DAE8AFC5C960461E10080000A03112B @ sap.com'> <sap:Name>MainDocument</sap:Name> <sap:Description/> <sap:Type>Application</sap:Type> </sap:Payload> </sap:Manifest>
If you look at a message in XI 3.0 format this is the part that is found in the tag <SOAP:Body>. So it seams that for the adapter module the message is treated as a normal soap message and the soap body is treated as payload.
We have tried to get the real payload (which is an attachment in the message) with message.getAttachment(String name) but getAttachmentIterator() returned an iterator pointing to an empty list.
Any ideas what could be wrong or how to remedy the problem?