Hi, We are seeing some odd behavior while accessing our Web Service written in Axis 1.2. The managed code C++ client auto-generated by VS.NET works perfectly, but the native code C++ client auto-generated by VS.NET fails completely. The SOAP requests generated by both the clients are identical, and the SOAP responses generated by the web service are also identical in both cases. The modified WSDL files generated by both the clients are also identical.
Specifically, the native code C++ client fails in the BeginParse() method of the CSoapSocketClient template class which is auto-generated by VS.NET: int _tmain(int argc, _TCHAR* argv[]) { CServerClassService serverClassService ; CoInitialize(NULL); int i = 10, x; HRESULT h; h = serverClassService.getIntValue(i, &x); printf("value of x is %x", x); return 0; } The program prints 0xcccccccc, and h is set to E_FAIL. The server and client WSDL files and the SOAP request/response messages are attached below. Any illumination of this situation will be much appreciated. thanks, Manoj The web service WSDL: --------------------- ?xml version="1.0" encoding="UTF-8"?> wsdl:definitions targetNamespace="com.adaptiva.cclient" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="com.adaptiva.cclient" xmlns:intf="com.adaptiva.cclient" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> !--WSDL created by Apache Axis version: 1.2beta Built on Jun 04, 2004 (12:01:42 PDT)--> wsdl:message name="getIntValueResponse"> wsdl:part name="getIntValueReturn" type="xsd:int"/> /wsdl:message> wsdl:message name="getIntValueRequest">wsdl:part name="in0" type="xsd:int"/> /wsdl:message> wsdl:portType name="ServerClass"> wsdl:operation name="getIntValue" parameterOrder="in0"> wsdl:input message="impl:getIntValueRequest" name="getIntValueRequest"/> wsdl:output message="impl:getIntValueResponse" name="getIntValueResponse"/> /wsdl:operation> /wsdl:portType>wsdl:binding name="TestCClientSoapBinding" type="impl:ServerClass"> wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> wsdl:operation name="getIntValue"> wsdlsoap:operation soapAction=""/> wsdl:input name="getIntValueRequest"> wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="com.adaptiva.cclient" use="encoded"/> /wsdl:input> wsdl:output name="getIntValueResponse"> wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="com.adaptiva.cclient" use="encoded"/> /wsdl:output> /wsdl:operation> /wsdl:binding> wsdl:service name="ServerClassService"> wsdl:port binding="impl:TestCClientSoapBinding" name="TestCClient"> wsdlsoap:address location="http://localhost:8080/axis/services/TestCClient"/> /wsdl:port> /wsdl:service> /wsdl:definitions> The WSDL auto-generated by both the clients: -------------------------------------------- ?xml version="1.0" encoding="utf-8"?> definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="com.adaptiva.cclient" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="com.adaptiva.cclient" xmlns="http://schemas.xmlsoap.org/wsdl/"> types /> message name="getIntValueResponse"> part name="getIntValueReturn" type="s:int" /> /message> message name="getIntValueRequest"> part name="in0" type="s:int" /> /message> portType name="ServerClass"> operation name="getIntValue" parameterOrder="in0"> input name="getIntValueRequest" message="tns:getIntValueRequest" /> output name="getIntValueResponse" message="tns:getIntValueResponse" /> /operation> /portType> binding name="TestCClientSoapBinding" type="tns:ServerClass"> soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" /> operation name="getIntValue"> soap:operation soapAction="" /> input name="getIntValueRequest"> soap:body use="encoded" namespace="com.adaptiva.cclient" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> /input> output name="getIntValueResponse"> soap:body use="encoded" namespace="com.adaptiva.cclient" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> /output> /operation> /binding> service name="ServerClassService"> port name="TestCClient" binding="tns:TestCClientSoapBinding"> soap:address location="http://localhost:8080/axis/services/TestCClient" /> /port> /service> /definitions> SOAP request message: --------------------- ?xml version="1.0" encoding="UTF-8"?> soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> snp:getIntValue xmlns:snp="com.adaptiva.cclient"> in0>15 /in0> /snp:getIntValue> /soap:Body> /soap:Envelope> SOAP response message: ---------------------- soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> soapenv:Body> ns1:getIntValueResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="com.adaptiva.cclient"> getIntValueReturn href="#id0"/> /ns1:getIntValueResponse> multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">15 /multiRef> /soapenv:Body> /soapenv:Envelope> reply asap thanks __________________________________ Do you Yahoo!? Friends. Fun. Try the all-new Yahoo! Messenger. http://messenger.yahoo.com/