What kind of client API are you using? A stub generated using
wsdl2java or the ServiceClient API together with Axiom?

Andreas

On Fri, Jan 20, 2012 at 01:32, Suresh Janardhanan
<suresh.janardha...@gmail.com> wrote:
> Andreas,
>
> I'll try to start from the beginning and explain what I am trying to achieve
> as you suggested.
> I generated a web service client for a .NET Target web service using Apache
> Axis 2.1.6.1.
> Here is a snippet of the .Net WSDL.
> <wsdl:message name="RetrieveByParameterSoapIn">
> <wsdl:part name="sKey" type="s:string" />
> <wsdl:part name="sIDTypeID" type="s:string" />
> <wsdl:part name="sID" type="s:string" />
> <wsdl:part name="sXmlParameters" type="s:string" />
> </wsdl:message>
> The Target expects an XML string to be set in "sXmlParameters", something
> like this -
>
> <![CDATA[<PARAMETERS><RETURN><GENERALINFORMATION><INFORMATIONRETURNTYPEID>3294f665bc644359bfd15824d2efe29c</INFORMATIONRETURNTYPEID></GENERALINFORMATION></RETURN></PARAMETERS>]]
>
>
> Since it is a "string type", Axis client is converting the characters - <
> and >
>
> So, the request looks like this -
>
> [main] DEBUG httpclient.wire.content  - >> "<?xml version='1.0'
> encoding='UTF-8'?><soapenv:Envelope
> xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";><soapenv:Body><ns1:RetrieveByParameter
> xmlns:ns1="http://wsdl.echelon.com/Panoramix/";><sKey>e1839da0c11c4058928b650f97c06853</sKey><sIDTypeID>f76e5d708edd464593bb031f646990b6</sIDTypeID><sID>100063728</sID><sXmlParameters>&lt;![CDATA[&lt;PARAMETERS>&lt;RETURN>&lt;GENERALINFORMATION>&lt;INFORMATIONRETURNTYPEID>3294f665bc644359bfd15824d2efe29c&lt;/INFORMATIONRETURNTYPEID>&lt;/GENERALINFORMATION>&lt;/RETURN>&lt;/PARAMETERS>]]&gt;</sXmlParameters></ns1:RetrieveByParameter></soapenv:Body></soapenv:Envelope>"
>
>
> My objective is to send the XML string inside "sXmlParameters" as is without
> the <, > getting converted.
>
>
> So I tried these steps.
>
> 1. I thought by adding XMLInputFactory.properties
> - javax.xml.stream.isCoalescing=false, it would the issue. But you pointed
> out that since it is character data this won't work.
>
> 2. I tried changing the "sXmlParameters" type in the wsdl, but that resulted
> in com.ctc.wstx.exc.WstxUnexpectedCharException.
>
> changed sXmlParameters type=s:string to xmlStingType as shown below.
>
>       <wsdl:types>
>
>             <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>
>                   targetNamespace="http://wsdl.echelon.com/Panoramix/";>
>
>                   <xsd:complexType name="xmlStringType">
>
>                         <xsd:sequence>
>
>                               <xsd:any
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
>
>                         </xsd:sequence>
>
>                   </xsd:complexType>
>
>             </xsd:schema>
>
>       </wsdl:types>
>
> <wsdl:part name="sXmlParameters" type="tns:xmlStringType" />
>
> Code Snippet:
>
> XmlStringType xmlStrType = new XmlStringType();
>
>       OMElement element = AXIOMUtil.stringToOM(xmlParameters);
>
>       xmlStrType.setExtraElement(element);
>
> Stack Trace:
>
> Caused by:
>
> org.apache.axiom.om.OMException:
> com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'C' (code
> 67) (CDATA not allowed in prolog/epilog)
>
> at [row,col {unknown-source}]: [1,3]
>
>   Stack Trace:
>
>
> org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:297)
>
>
> org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:111)
>
>
> org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:571)
>
>
> org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:567)
>
>         org.apache.axiom.om.util.AXIOMUtil.stringToOM(AXIOMUtil.java:54)
>
>         org.apache.axiom.om.util.AXIOMUtil.stringToOM(AXIOMUtil.java:39)
>
>
> Any help is much appreciated.
>
>
> Thanks,
>
> Suresh

Reply via email to