Re: Problem deserializing SOAP response in Axis C++ client

2005-08-08 Thread Samisa Abeysinghe
We seem to have a problem with encoding.
There are few Jira issues on this.

We got to look into XML encoding to solve this problem.

Samisa...

On 8/6/05, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:
  
 OK, I think I see my mistake. The SOAP response sent by the webservice has
 character entities (lt; and gt;) instead ofin its xml tags. 
   
 Thus the line 
 result xsi:type=xsd:stringTEST/result 
   
 is actually -  
 lt;result xsi:type=xsd:stringgt;TESTlt;/resultgt; 
   
 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:stringgt;TESTlt;/resultgt;/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:stringTEST/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

RE: Problem deserializing SOAP response in Axis C++ client

2005-08-06 Thread linesh.mahadik



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;TESTlt;/resultgt;

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;TESTlt;/resultgt;/n1:lookupProductResponse
/env:Body/env:Envelope

Any
ideahow to enable parsing of character entity tagsasxml
nodesin 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
PMTo: axis-c-user@ws.apache.orgSubject: 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, itstopped 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
PMTo: Apache AXIS C User ListSubject: 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
AMTo:
axis-c-user@ws.apache.orgSubject: 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. Theexception occurs on calling getElementAsString
function (after checkMessage return
successful, line 3105: atm_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:Bodyns1:lookupProduct
  xmlns:ns1="http://www.cardinal.com/distribution/webservices"xmlRequest
  xsi:type="xsd:string"
  
  ciar:Produ

RE: Problem deserializing SOAP response in Axis C++ client

2005-08-05 Thread Dushshantha Chandradasa








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.
Theexception occurs on calling getElementAsString function
(after checkMessage return successful, line 3105: atm_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





ciar:ProductLookupRequest xmlns:ciar=http://ws.cardinal.com/2004/ProductLookupRequest_1_0.xsdProductLookupRequestHeaderTransactionIdAB1234CDEF1A3/TransactionIdClientIdIVR/ClientId/ProductLookupRequestHeaderProductLookupCriteriaListProductLookupCriteriaItemNumber1/ItemNumberItemNumberTypeNDC_UPC/ItemNumberTypeShipToCustomerNumber475744/ShipToCustomerNumberDivisionNumber11/DivisionNumberQuantity1/QuantityUnitOfMeasureEA/UnitOfMeasure/ProductLookupCriteria/ProductLookupCriteriaList/ciar:ProductLookupRequest





/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:stringTEST/result
 /n1:lookupProductResponse
/env:Body
/env:Envelope

Thanksin
advance,

LineshMahadik












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.


RE: Problem deserializing SOAP response in Axis C++ client

2005-08-05 Thread linesh.mahadik



Hi Dushshantha,

Please find the attached wsdl. 

When debugged AxisXmlParserXerces code with a
xerces-c_2_6D.dll, itstopped 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
PMTo: Apache AXIS C User ListSubject: 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
AMTo:
axis-c-user@ws.apache.orgSubject: 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. Theexception occurs on calling getElementAsString
function (after checkMessage return
successful, line 3105: atm_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:Bodyns1:lookupProduct
  xmlns:ns1="http://www.cardinal.com/distribution/webservices"xmlRequest
  xsi:type="xsd:string"
  
  ciar:ProductLookupRequest
  xmlns:ciar="http://ws.cardinal.com/2004/ProductLookupRequest_1_0.xsd"ProductLookupRequestHeaderTransactionIdAB1234CDEF1A3/TransactionIdClientIdIVR/ClientId/ProductLookupRequestHeaderProductLookupCriteriaListProductLookupCriteriaItemNumber1/ItemNumberItemNumberTypeNDC_UPC/ItemNumberTypeShipToCustomerNumber475744/ShipToCustomerNumberDivisionNumber11/DivisionNumberQuantity1/QuantityUnitOfMeasureEA/UnitOfMeasure/ProductLookupCriteria/ProductLookupCriteriaList/ciar:ProductLookupRequest
  
  /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
Thanksin
advance,
LineshMahadik

  
  
Confidentiality Notice
  The information contained in this electronic message and any
  attachments to this message are intendedfor the exclusive use of the
  addressee(s) and may contain confidential or privileged