OK, I think I see my mistake. The SOAP response sent by the webservice has character entities (&lt; and &gt;) instead of "<" & ">" in its xml tags.
 
Thus the line
<result xsi:type="xsd:string">TEST</result>
 
is actually - 
&lt;result xsi:type="xsd:string"&gt;TEST&lt;/result&gt;
 
SOAP Response from webservice
<env:Envelope
    xmlns:env = "
http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance"
    xmlns:soapenc = "
http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:xsd = "
http://www.w3.org/2001/XMLSchema">
    <env:Body>
        <n1:lookupProductResponse xmlns:n1 = "
http://www.cardinal.com/distribution/webservices">&lt;result xsi:type="xsd:string"&gt;TEST&lt;/result&gt;</n1:lookupProductResponse>
    </env:Body>
</env:Envelope>
 
Any idea how to enable parsing of character entity tags as xml nodes in Axis C++ (actually xerces 2.6) client?
 
There is a function setCreateEntityReferenceNodes(bool) mentioned axis docs (%AXIS_EXTRACT%/xerces-c_2_6_0-windows_nt-msvc_60/doc/html/apiDocs/classAbstractDOMParser.html#z452_5), can this be used in this case?
 
 
Thanks,
 
Linesh
 


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Friday, August 05, 2005 3:20 PM
To: axis-c-user@ws.apache.org
Subject: RE: Problem deserializing SOAP response in Axis C++ client

Hi Dushshantha,
 
Please find the attached wsdl.
 
When debugged AxisXmlParserXerces code with a xerces-c_2_6D.dll, it stopped throwing exception like xerces-c_2_2_0.dll (the dll which I was using earlier). However, getElementAsString() is now returning 0 value after deserializing <result xsi:type="xsd:string">TEST</result>.
 
Some pointers -
 
In getElementAsString() function,  getXSDType() (SoapDeSerializer.cpp: line # 3110) returns XSD_UNKNOWN. This ultimately results in returning 0 from getElementString (instead of "TEST").
 
At line # 3106 in SoapDeSerializer.cpp (m_pNode = m_pParser->next ()) the m_type of node pointer shows END_ELEMENT instead of expected START_ELEMENT. This results in returning type as XSD_UNKNOWN.
 
Also, for some reason pElement->m_pchAttributes array also shows up empty in getXSDType() function.
 
 
This seems to be a bug. If so, is there any work already done on it?
 
 
Thanks & regards,
 
Linesh



From: Dushshantha Chandradasa [mailto:[EMAIL PROTECTED]
Sent: Friday, August 05, 2005 1:08 PM
To: Apache AXIS C User List
Subject: RE: Problem deserializing SOAP response in Axis C++ client

Hi Linesh,

 

It would be better if you can attach the wsdl file you are using for that then I can generate the client and test with MockServer.

And you can use MockServer for Client side testing. Please refer to ..\ws-axis\c\tests\auto_build\UnitTest_Readme.txt for more information.

 

Thanks,

Dushshantha


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Friday, August 05, 2005 10:23 AM
To: axis-c-user@ws.apache.org
Subject: Problem deserializing SOAP response in Axis C++ client

 

Hi,

 

I am trying to communicate with a J2EE webservice running on Bea Weblogic webserver 8.1 SP3. The client side has Axis C++. I am getting error while reading the SOAP response sent by the webservice. The exception occurs on calling getElementAsString function (after checkMessage return successful, line 3105: at m_pNode = m_pParser->next ()).

 

The code is exactly similar to the one provided with C++ samples.

 if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER))
   return *Ret;

 if (NULL==m_pCall->getTransportProperty("SOAPAction",false))
 {
  m_pCall->setTransportProperty(SOAPACTION_HEADER , "ProductLookupService#lookupProduct");
 }
  m_pCall->setSOAPVersion(SOAP_VER_1_1);

 

 setUsername("user");
 setPassword("password");

 

 m_pCall->setOperation("lookupProduct", "http://localhost/distribution/webservices");
  
 applyUserPreferences();
 m_pCall->addParameter((void*)lpParam, "xmlRequest", XSD_STRING);
  
 if (AXIS_SUCCESS == m_pCall->invoke())

 {

   

if(AXIS_SUCCESS==m_pCall->checkMessage("lookupProductResponse", "http://www.cardinal.com/distribution/webservices"))
{
     char sTemp[1024]="";
     sprintf(sTemp, m_pCall->getElementAsString("result", 0));    //**** EXCEPTION THROWN HERE***
}
 

The response received is as below (Trapped using Mindreef SOAPScope).

 

Request sent (It sends an XML string in parameter "xmlRequest") -

<?xml version='1.0' encoding='utf-8' ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="
http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ns1:lookupProduct xmlns:ns1="
http://www.cardinal.com/distribution/webservices">
<xmlRequest xsi:type="xsd:string">

</xmlRequest>
</ns1:lookupProduct>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Rsposne received (Output parameter name is "result")-

<env:Envelope
   
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
   
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<env:Body>
    <n1:lookupProductResponse
xmlns:n1="http://www.cardinal.com/distribution/webservices">
        <result xsi:type="xsd:string">TEST</result>
    </n1:lookupProductResponse>
</env:Body>
</env:Envelope>

Thanks in advance,

Linesh Mahadik



Confidentiality Notice

The information contained in this electronic message and any attachments to this message are intended
for the exclusive use of the addressee(s) and may contain confidential or privileged information. If
you are not the intended recipient, please notify the sender at Wipro or [EMAIL PROTECTED] immediately
and destroy all copies of this message and any attachments.


Confidentiality Notice

The information contained in this electronic message and any attachments to this message are intended
for the exclusive use of the addressee(s) and may contain confidential or privileged information. If
you are not the intended recipient, please notify the sender at Wipro or [EMAIL PROTECTED] immediately
and destroy all copies of this message and any attachments.


Confidentiality Notice

The information contained in this electronic message and any attachments to this message are intended
for the exclusive use of the addressee(s) and may contain confidential or privileged information. If
you are not the intended recipient, please notify the sender at Wipro or [EMAIL PROTECTED] immediately
and destroy all copies of this message and any attachments.

Reply via email to