We have a flow service which takes xml as input (xmlRequest). But the input xmlRequest is a string. In the flow service I use xmlStringToNode. When I send the SOAP request with xml as input, I am getting an error “Parameters xmldata, $filestream and $filedata are all missing” . To make it work, I had to encode the xml, byt converting the < to < and > to >.
Is there any other way to make it work?
Any XML string should be encoded for these special charaters before parsing. Exception mentioned by you seems to be different from what you are asking for. It seems your input to xmlStringToNode is coming as null. Please verify again.
I verified it. If I don’t encode the xml by converting < to < and > to >, the input to xmlStringToNode is null. If I encode the input xml, it if fine. I was wondering if we can make it work with out encoding it. Our web team has been sending input xml in the SOAP message to the vendor with out encoding it. They don’t seem to have any problem. I am not sure what the vendor is doing on their side.
This is a really bad design. A) SoapRPC has been recognized as having major interoperability issues for about 5 years now and B) Sending an XML document as a parameter instead of using a document/literal message with a properly designed schema has many, many limitations such as inability to validate the XML document requirement to encode the XML as you have noted and inability to transform the request easily when intermediaries such as ESBs are in use.
Redesign this using best practices to avoid future issues with interoperability and usability.