on 2018 May 22 7:55 AM
Hello Experts,
I’m working on PI dual stack 7.30 , and have a scenaio RFC( ECC ) -> PI -> SOAP.(3rd).
Either in synchronized or asynchronize mode, the SOAP Receiver channel got an error:
SOAP: call failed: java.io.IOException: Cant parse the document; HTTP 200 OK.
The logs as below:

However, 3rd checked that the message had been received and got no error.
I have check that, 3rd response with text/utf-8 format message.

Then ,I tried to use Soap UI tool to call the soap service directly, everything is OK.
Even , I used the provided WSDL to generate client proxy in ECC to test the SOAP service, and with ABAP developers' help to call the service, and all is working fine.
The message by soap ui directly sent look like as below:

So, how could I overcome this error?
Please give me some advice.
Thanks in advance.
Request clarification before answering.
Hi Wu Feng,
By looking in to your request payloads
[1] I got the reason of soap-fault message saying invalid namespace [when option unchecked "Do Not use soap Envelope"], that is,
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/"
xmlns:a="http://www.w3.org/2005/08/addressing">
<soap:Header>
<a:Action soap:mustUnderstand="1">http://tempuri.org/DeviceCategoryInput</a:Action>
</soap:Header>
<soapenv:Body>
<tem:DeviceCategoryInput>
<DeviceCategorys>
<!--1 or more repetitions:-->
<DeviceCategory>
<CLASS>P001</CLASS>
<KSCHL>test</KSCHL>
<P_CLASS>H01</P_CLASS>
<P_KSCHL>Furnace</P_KSCHL>
<STATU>Approved</STATU>
<ADATU>20180522</ADATU>
<VDATU>20180522</VDATU>
</DeviceCategory>
</DeviceCategorys>
</tem:DeviceCategoryInput>
</soapenv:Body>
</soapenv:Envelope>
[2] With option "un-check", its good that, you have confirmation of soap-request receipts at 3rd party end is been sent successfully.
Meanwhile, can you try config type [1] all suggested steps in PI ? Here too may come same error while response receipts.
Thanks & Regards,
Dilip
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
I got soap-response from log, no need to re-attach.
Mean while, please try type [1] config, if possible.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:DeviceCategoryInputResponse xmlns:ns2="http://tempuri.org/"><out>S</out></ns2:DeviceCategoryInputResponse></soap:Body></soap:Envelope>
Hi Wu Feng,
When working with "uncheck" option for "Do Not use soap Envelope", in response mapping, do you have logic to extract element "DeviceCategoryInputResponse" soap-envelope response ?
You need that too, this can be tried out in both config types, can be achieved using XSLT.
Hi Dilip,
I'm not familiar with XSLT MAPPING.
If generating the Soap-Request format, do I need to change the target message type?
And the Mapping code like below?
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="XML" indent="YES" />
<xsl:template match="/">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/"
xmlns:a="http://www.w3.org/2005/08/addressing">
<soap:Header>
<a:Action soap:mustUnderstand="1">http://tempuri.org/DeviceCategoryInput</a:Action>
</soap:Header>
<soapenv:Body>
<tem:DeviceCategoryInput>
<DeviceCategorys>
<xsl:for-each select="Z_PM_MASTERDATA_SBFLTX_SEND/IT_CLAS_ATTRIBS/item">
<DeviceCategory>
<xsl:variable name="CLASS" select="CLASS" />
<xsl:variable name="KSCHL" select="KSCHL" />
<xsl:variable name="P_CLASS" select="P_CLASS" />
<xsl:variable name="P_KSCHL" select="P_KSCHL" />
<xsl:variable name="STATU" select="STATU" />
<xsl:variable name="ADATU" select="ADATU" />
<xsl:variable name="VDATU" select="VDATU" />
</DeviceCategory>
</xsl:for-each>
</DeviceCategorys>
</tem:DeviceCategoryInput>
</soapenv:Body>
</soapenv:Envelope>
</xsl:template>
</xsl:stylesheet>
Hi,
One more observation, in soap-ui's response payload, there is no header present.
As per wsdl too, your response payload should be like below, please ask 3rd part team for this.
<soap:Envelope
xmlns:a="http://www.w3.org/2005/08/addressing"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<a:Action s:mustUnderstand="1">http://tempuri.org/DeviceCategoryInput</a:Action>
</soap:Header>
<soap:Body>
<ns2:DeviceCategoryInputResponse
xmlns:ns2="http://tempuri.org/">
<out>S</out>
</ns2:DeviceCategoryInputResponse>
</soap:Body>
</soap:Envelope>
At our side too, when my service works with soap-action, it returns that info in header of soap-response.
| User | Count |
|---|---|
| 13 | |
| 8 | |
| 7 | |
| 5 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 2 | |
| 2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.