Thursday, February 04, 2010

Using OpenEdge 10.2.A from Progress to consume a webservice:

When passing an EXTENT LONGCHAR containing an array of XML messages as a parameter to a web method, the xml message(s) are being partially HTML-ENCODED. Which the receiving web method does not appreciate in the slightest.

When I say the XML is being partially HTML-ENCODED, I mean that the '<' and '"'s are being replaced with '<' and '"' respectively. The '>'s are not being replaced. I have no access to the code block where the web call is being made and the encoding occurs as the WSDL is downloaded by Progress OpenEdge on each call. The WSDL is processed and the methods + signatures determined dynamically.

The Schema used defined a custom element type of "anyType". This was the source of the problem. Progress would not interpret the usage/implementation of this node correctly - where the anyType node was meant to be replaced by any other element in the schema defined as type anyType.

Taking the WSDL and manually modifying the schema portion of it to build the message without the anyType did the trick. The encoding also ceased.

3 comments:

Molly said...

Hey Jessel,
Did you work this one out? If not, you might want contact Progress TechSupport, I am sure they can assit!
Best of luck

Unknown said...

I did work this out by downloading the wsdl and saving and loading it locally. I then took the local copy and modified it to something that Progress will work with.

I can post the changes to the xsd if requested.

Unknown said...

Hey Jessel, this worked like a charm for me. I modified the WSDL's anyType to a CHARACTER, left it blank, and was able to call the web service involved.

Thanks a bunch!!