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.
<?xml version="1.0" encoding="UTF-8"?>
<definitions  xmlns:tns="http://www.cardinal.com/distribution/webservices";
  xmlns:wsr="http://www.openuri.org/2002/10/soap/reliability/";
  xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/";
  xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/";
  xmlns:http="http://schemas.xmlsoap.org/wsdl/http/";
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
  xmlns:soap12enc="http://www.w3.org/2003/05/soap-encoding";
  xmlns:conv="http://www.openuri.org/2002/04/wsdl/conversation/";
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
  xmlns:s="http://www.w3.org/2001/XMLSchema";
  xmlns="http://schemas.xmlsoap.org/wsdl/";
  targetNamespace="http://www.cardinal.com/distribution/webservices";>
 <types   xmlns:tns="http://www.cardinal.com/distribution/webservices";
   xmlns:wsr="http://www.openuri.org/2002/10/soap/reliability/";
   xmlns:http="http://schemas.xmlsoap.org/wsdl/http/";
   xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/";
   xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/";
   xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
   xmlns:soap12enc="http://www.w3.org/2003/05/soap-encoding";
   xmlns:conv="http://www.openuri.org/2002/04/wsdl/conversation/";
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
   xmlns:s="http://www.w3.org/2001/XMLSchema";
   xmlns="http://schemas.xmlsoap.org/wsdl/";>
  <xsd:schema    xmlns:xsd="http://www.w3.org/2001/XMLSchema";
    xmlns:stns="java:com.cardinal.pdit.ebsl.web.internal"
    elementFormDefault="qualified"
    attributeFormDefault="qualified"
    targetNamespace="java:com.cardinal.pdit.ebsl.web.internal">
   <xsd:element     type="stns:WebServiceException"
     name="WebServiceException">
   </xsd:element>
   <xsd:complexType     name="WebServiceException">
   </xsd:complexType>
  </xsd:schema>
  <xsd:schema    xmlns:xsd="http://www.w3.org/2001/XMLSchema";
    xmlns:stns="http://www.cardinal.com/distribution/webservices";
    elementFormDefault="qualified"
    attributeFormDefault="qualified"
    targetNamespace="http://www.cardinal.com/distribution/webservices";>
   <xsd:element     type="xsd:string"
     name="lookupProduct"
     nillable="true">
   </xsd:element>
   <xsd:element     type="xsd:string"
     name="lookupProductResponse"
     nillable="true">
   </xsd:element>
  </xsd:schema>
 </types>
 <message   name="lookupProduct">
  <part    xmlns:partns="http://www.cardinal.com/distribution/webservices";
    name="xmlRequest"
    element="partns:lookupProduct">
  </part>
 </message>
 <message   name="lookupProductResponse">
  <part    xmlns:partns="http://www.cardinal.com/distribution/webservices";
    name="result"
    element="partns:lookupProductResponse">
  </part>
 </message>
 <message   name="WebServiceException">
  <part    xmlns:partns="java:com.cardinal.pdit.ebsl.web.internal"
    name="WebServiceException"
    element="partns:WebServiceException">
  </part>
 </message>
 <portType   name="ProductLookupServiceBrokerPort">
  <operation    name="lookupProduct">
   <input     message="tns:lookupProduct">
   </input>
   <output     message="tns:lookupProductResponse">
   </output>
   <fault     name="WebServiceException"
     message="tns:WebServiceException">
   </fault>
  </operation>
 </portType>
 <binding   type="tns:ProductLookupServiceBrokerPort"
   name="ProductLookupServiceBrokerPort">
  <soap:binding    style="document"
    transport="http://schemas.xmlsoap.org/soap/http";>
  </soap:binding>
  <operation    name="lookupProduct">
   <soap:operation     style="document"
     soapAction="">
   </soap:operation>
   <input>
    <soap:body      namespace="http://www.cardinal.com/distribution/webservices";
      use="literal">
    </soap:body>
   </input>
   <output>
    <soap:body      namespace="http://www.cardinal.com/distribution/webservices";
      use="literal">
    </soap:body>
   </output>
   <fault     name="WebServiceException">
    <soap:fault      namespace="http://www.cardinal.com/distribution/webservices";
      name="WebServiceException"
      use="literal">
    </soap:fault>
   </fault>
  </operation>
 </binding>
 <service   name="ProductLookupServiceBroker">
  <port    name="ProductLookupServiceBrokerPort"
    binding="tns:ProductLookupServiceBrokerPort">
   <soap:address     location="http://ebslqctest.cardinal.net:8170/pdit-ebsl-servlet/ProductLookupService";>
   </soap:address>
  </port>
 </service>
</definitions>

Reply via email to