I have noticed that if I send decoded XML to an endpoint, it fails with a bad request error, but if I wrap the request in CDATA or encode the characters, it runs fine, so my two questions are:
Why do I need to use CDATA or encode the characters?
What is it about the web service that makes me have to do this?
What is the difference between wrapping the message in CDATA and encoding the characters?
If CDATA is ignored by the parser, doesn’t that mean the message your are trying to send won’t be processed?
My webservice has web method called Process, but the message that is trying to be sent is MessageB, so do I need to wrap the contents of MessageB in CDATA because the XML Parser won’t understand it?
If my web-service contained a web-method called MessageB, would it still be required to be wrapped in CDATA or escaped? My case is that I don’t have a web-method MessageB, but something called Process which listens for the MessageB request through a switch statement. I am thinking because I don’t have MessageB defined as a web-method, that is the reason why I have to wrap it in CDATA or escape it, but I believe my thinking is wrong?
If you don’t wrap or encode the data, it will become part of the main XML document. When the web service tries to parse the document, it will find elements that it can’t map to what it expects, and spits it out.
This is not specific to web services, but applies anytime you want to use XML code as a value inside an XML document.
There is little practical difference between using CDATA and encoding the characters. It’s just two different ways of embedding special characters in a value in an XML document.