cancel
Showing results for 
Search instead for 
Did you mean: 

SOAP Adapter - Error because of special character (u00FC - Umlaut) in payload

0 Kudos

Hello,

We have a SOAP sync scenario.

SAP -> PI 7.0 -> 3rd Party system

We have a special character (ü - Umlaut) as part of the payload.

When the message enters message pipeline in PI, I can see the payload XML till message branching step.

From Message mapping step, i get the message - "The XML page cannot be displayed. An invalid character was found in text content" in SXMB_MONI.

In communication channel monitoring, I see the following error:

SOAP: error occured: com.sap.aii.af.ra.ms.api.RecoverableException: Parsing Error: com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.ParserException: Unsupported character: 72(:main:, row:2, col:2106)(:main:, row=2, col=2106) -> com.sap.engine.lib.xml.parser.ParserException: Unsupported character: 72(:main:, row:2, col:2106): java.io.IOException: Parsing Error: com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.ParserException: Unsupported character: 72(:main:, row:2, col:2106)(:main:, row=2, col=2106) -> com.sap.engine.lib.xml.parser.ParserException: Unsupported character: 72(:main:, row:2, col:2106)

But, when I pass the same message(with special character) to the 3rd party system using SOAP UI, i get a valid response back.

So, what is going wrong in PI?

Thanks,

Chandra

Accepted Solutions (0)

Answers (3)

Answers (3)

stefan_grube
Active Contributor
0 Kudos

I assume that the mapping will corrupt the XML payload.

What kind of mapping do you use?

0 Kudos

Hi Stefan,

I am using Java mapping. Even though I am not doing any data transformation in mapping, I had to use it as the target namespaces required are more than 60 characters in length, and PI 7.0 does not support that.

So, I am adding namespace tags as part of java mapping.

Example:

This is the Initial xml tag:

<TradeName>TEST</TradeName>

This is the xml tag after java mapping, according to our requirement:

<est2:TradeName xmlns:est2="http://xml.namespaces.abcde.com/im/xip/dsp/data/establishmentges/establishment">TEST</est2:TradeStyleName>

Thanks,

Chandra

stefan_grube
Active Contributor
0 Kudos

> I am using Java mapping.

Obviously your Java mapping is wrong.

0 Kudos

Hi Stefan,

Without any special characters in the payload, my interface works, and i get a valid response back. It has been working for a while now. But for the first time it encountered this special character, it failed.

So, do you still say that it is java mapping issue?

If yes, can you please give me any pointer about what might be going wrong here?

Many Thanks,

Chandra

samiullah_qureshi
Active Contributor
0 Kudos

Please check whether paylaod is properly generated in ur mapping step....If yes...then olz use following module param in ur soap receiver comm channel to change the encoding before sending it to receiver :

Module Key - SOAP .

Parameter Name - XMBWS.XMLEncoding

Parameter Value - UTF-16(or any other encoding that you want to be used)

stefan_grube
Active Contributor
0 Kudos

When the payload can displayed before the mapping step, but fails after the mapping step, isn't it chrystal clear where the issue must be?

I do not know your mapping so I cannot tell you what is wrong.

Former Member
0 Kudos

You need to check your usage regarding string encoding. E.g. when you read the input stream into a string, check which encoding you pass (if any) for that call. Make sure that encoding is the same as passed in the payload. Probably this is your problem, a common mistake. If you give the wrong encoding, the xml will not be valid anymore, as in your case obviously.

If you currently do not pass an encoding while you convert the stream into string, try to add an explicit encoding. Find out what the right input encoding is.

CSY

Former Member
0 Kudos


Hi Samiullha,

Could you please let me know the Module name?

Hi CHandra,

Could you please update how you fixed it. I am also facing similar issue.

Error is com.sap.engine.interfaces.messaging.api.exception.MessagingException: java.io.IOException: Parsing Error: org.xml.sax.SAXParseException: Invalid byte 2 of 3-byte UTF-8 sequence.</

for æ ø å Æ Ø Å characture.

Module I have used is

1st module

1AF_Modules/MessageTransformBeanLocal Enterprise Bean0

2   sap.com/com.sap.aii.af.soapadapter/XISOAPAdapterBean local SOAP

Parameter Transform.ContentType  and value text/xml

Former Member
0 Kudos

Hi,

Looking at your message, your message is succesfull in SXMB_MONI with warning message and the actual error is coming in Comm Channel while delivering the message to target. Please correct me if I am wrong.

Have you used any encoding in sender channel? Ideally, if the character is not supported by UTF-8 format, the message will not go till receiver communication channel. It shd fail before that.

-Gouri

0 Kudos

Hi Gouri,

you are right. My message is successful in SXMB_MONI, and the error is coming from comm channel monitoring with deliverin to target.

My sender is a proxy, and we can not specify any encoding in proxy sender.

I did not specify any encoding in SOAP Receiver aswell.

This is the sequence in comm channel monitoring:

Success: Delivering to channel: CI_SOAP_Receiver_Sync

Success: MP: Entering module processor

Success: MP: Processing local module localejbs/sap.com/com.sap.aii.af.soapadapter/XISOAPAdapterBean

Success: SOAP: request message entering the adapter with user J2EE_GUEST

Error: SOAP: call failed: java.io.IOException: Parsing Error: com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.ParserException: Unsupported character: 72(:main:, row:2, col:2046)(:main:, row=2, col=2046) -> com.sap.engine.lib.xml.parser.ParserException: Unsupported character: 72(:main:, row:2, col:2046)

Error SOAP: error occured: com.sap.aii.af.ra.ms.api.RecoverableException: Parsing Error: com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.ParserException: Unsupported character: 72(:main:, row:2, col:2046)(:main:, row=2, col=2046) -> com.sap.engine.lib.xml.parser.ParserException: Unsupported character: 72(:main:, row:2, col:2046): java.io.IOException: Parsing Error: com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.ParserException: Unsupported character: 72(:main:, row:2, col:2046)(:main:, row=2, col=2046) -> com.sap.engine.lib.xml.parser.ParserException: Unsupported character: 72(:main:, row:2, col:2046)

So, what can i do to fix this?

Thanks,

Chandra

Edited by: Chandra Sekhar H on Mar 3, 2011 12:25 PM

Former Member
0 Kudos

Hi,

Is your mapping Program output correct?

If yes, try using character encoding in receiver SOAP adapter as per SAP Note 856597. Also check if your receiver system code page can accept that character.

-Gouri

Former Member
0 Kudos

Its basically like UTF-8 encoding can not hadle the german character : ü - Umlaut

Can you try using "ISO-8859-1 " format...

For further info..read the following threads: