You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ro...@apache.org on 2004/06/26 16:08:18 UTC

cvs commit: ws-axis/c/tests/client/httpHeader/test3/rpc Makefile.am TestClient.cpp

roshan      2004/06/26 07:08:18

  Added:       c/tests/client/httpHeader/gen_src/rpc InteropBase.wsdl
                        InteropTestPortType.cpp InteropTestPortType.h
                        SOAPStruct_Array.h SOAPStruct.cpp SOAPStruct.h
               c/tests/client/httpHeader Makefile.am
               c/tests/client/httpHeader/test1 Makefile.am
               c/tests/client/httpHeader/test1/rpc Makefile.am
                        TestClient.cpp
               c/tests/client/httpHeader/test2 Makefile.am
               c/tests/client/httpHeader/test2/rpc Makefile.am
                        TestClient.cpp
               c/tests/client/httpHeader/test3 Makefile.am
               c/tests/client/httpHeader/test3/rpc Makefile.am
                        TestClient.cpp
  Log:
  test cases for http headers
  
  Revision  Changes    Path
  1.1                  ws-axis/c/tests/client/httpHeader/gen_src/rpc/InteropBase.wsdl
  
  Index: InteropBase.wsdl
  ===================================================================
  <?xml version="1.0"?>
  <definitions name="InteropTest" targetNamespace="http://soapinterop.org/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  
  	<types>
  		<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapinterop.org/xsd">
  	                <import namespace = "http://schemas.xmlsoap.org/soap/encoding/"/>
  			<complexType name="ArrayOfstring">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="string[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="ArrayOfint">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="ArrayOffloat">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="float[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="ArrayOfSOAPStruct">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="s:SOAPStruct[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="SOAPStruct">
  				<all>
  					<element name="varString" type="string"/>
  					<element name="varInt" type="int"/>
  					<element name="varFloat" type="float"/>
  				</all>
  			</complexType>
  		</schema>
  	</types>
  
  	<message name="echoStringRequest">
  		<part name="inputString" type="xsd:string"/>
  	</message>
  	<message name="echoStringResponse">
  		<part name="return" type="xsd:string"/>
  	</message>
  	<message name="echoStringArrayRequest">
  		<part name="inputStringArray" type="s:ArrayOfstring"/>
  	</message>
  	<message name="echoStringArrayResponse">
  		<part name="return" type="s:ArrayOfstring"/>
  	</message>
  	<message name="echoIntegerRequest">
  		<part name="inputInteger" type="xsd:int"/>
  	</message>
  	<message name="echoIntegerResponse">
  		<part name="return" type="xsd:int"/>
  	</message>
  	<message name="echoIntegerArrayRequest">
  		<part name="inputIntegerArray" type="s:ArrayOfint"/>
  	</message>
  	<message name="echoIntegerArrayResponse">
  		<part name="return" type="s:ArrayOfint"/>
  	</message>
  	<message name="echoFloatRequest">
  		<part name="inputFloat" type="xsd:float"/>
  	</message>
  	<message name="echoFloatResponse">
  		<part name="return" type="xsd:float"/>
  	</message>
  	<message name="echoFloatArrayRequest">
  		<part name="inputFloatArray" type="s:ArrayOffloat"/>
  	</message>
  	<message name="echoFloatArrayResponse">
  		<part name="return" type="s:ArrayOffloat"/>
  	</message>
  	<message name="echoStructRequest">
  		<part name="inputStruct" type="s:SOAPStruct"/>
  	</message>
  	<message name="echoStructResponse">
  		<part name="return" type="s:SOAPStruct"/>
  	</message>
  	<message name="echoStructArrayRequest">
  		<part name="inputStructArray" type="s:ArrayOfSOAPStruct"/>
  	</message>
  	<message name="echoStructArrayResponse">
  		<part name="return" type="s:ArrayOfSOAPStruct"/>
  	</message>
  	<message name="echoVoidRequest"/>
  	<message name="echoVoidResponse"/>
  	<message name="echoBase64Request">
  		<part name="inputBase64" type="xsd:base64Binary"/>
  	</message>
  	<message name="echoBase64Response">
  		<part name="return" type="xsd:base64Binary"/>
  	</message>
  	<message name="echoDateRequest">
  		<part name="inputDate" type="xsd:dateTime"/>
  	</message>
  	<message name="echoDateResponse">
  		<part name="return" type="xsd:dateTime"/>
  	</message>
  	<message name="echoHexBinaryRequest">
  		<part name="inputHexBinary" type="xsd:hexBinary"/>
  	</message>
  	<message name="echoHexBinaryResponse">
  		<part name="return" type="xsd:hexBinary"/>
  	</message>
  	<message name="echoDecimalRequest">
  		<part name="inputDecimal" type="xsd:decimal"/>
  	</message>
  	<message name="echoDecimalResponse">
  		<part name="return" type="xsd:decimal"/>
  	</message>
  	<message name="echoBooleanRequest">
  		<part name="inputBoolean" type="xsd:boolean"/>
  	</message>
  	<message name="echoBooleanResponse">
  		<part name="return" type="xsd:boolean"/>
  	</message>
  
  	<portType name="InteropTestPortType">
  		<operation name="echoString" parameterOrder="inputString">
  			<input message="tns:echoStringRequest"/>
  			<output message="tns:echoStringResponse"/>
  		</operation>
  		<operation name="echoStringArray" parameterOrder="inputStringArray">
  			<input message="tns:echoStringArrayRequest"/>
  			<output message="tns:echoStringArrayResponse"/>
  		</operation>
  		<operation name="echoInteger" parameterOrder="inputInteger">
  			<input message="tns:echoIntegerRequest"/>
  			<output message="tns:echoIntegerResponse"/>
  		</operation>
  		<operation name="echoIntegerArray" parameterOrder="inputIntegerArray">
  			<input message="tns:echoIntegerArrayRequest"/>
  			<output message="tns:echoIntegerArrayResponse"/>
  		</operation>
  		<operation name="echoFloat" parameterOrder="inputFloat">
  			<input message="tns:echoFloatRequest"/>
  			<output message="tns:echoFloatResponse"/>
  		</operation>
  		<operation name="echoFloatArray" parameterOrder="inputFloatArray">
  			<input message="tns:echoFloatArrayRequest"/>
  			<output message="tns:echoFloatArrayResponse"/>
  		</operation>
  		<operation name="echoStruct" parameterOrder="inputStruct">
  			<input message="tns:echoStructRequest"/>
  			<output message="tns:echoStructResponse"/>
  		</operation>
  		<operation name="echoStructArray" parameterOrder="inputStructArray">
  			<input message="tns:echoStructArrayRequest"/>
  			<output message="tns:echoStructArrayResponse"/>
  		</operation>
  		<operation name="echoVoid">
  			<input message="tns:echoVoidRequest"/>
  			<output message="tns:echoVoidResponse"/>
  		</operation>
  		<operation name="echoBase64" parameterOrder="inputBase64">
  			<input message="tns:echoBase64Request"/>
  			<output message="tns:echoBase64Response"/>
  		</operation>
  		<operation name="echoDate" parameterOrder="inputDate">
  			<input message="tns:echoDateRequest"/>
  			<output message="tns:echoDateResponse"/>
  		</operation>
  		<operation name="echoHexBinary" parameterOrder="inputHexBinary">
  			<input message="tns:echoHexBinaryRequest"/>
  			<output message="tns:echoHexBinaryResponse"/>
  		</operation>
  		<operation name="echoDecimal" parameterOrder="inputDecimal">
  			<input message="tns:echoDecimalRequest"/>
  			<output message="tns:echoDecimalResponse"/>
  		</operation>
  		<operation name="echoBoolean" parameterOrder="inputBoolean">
  			<input message="tns:echoBooleanRequest"/>
  			<output message="tns:echoBooleanResponse"/>
  		</operation>
  	</portType>
  
  	<binding name="InteropTestSoapBinding" type="tns:InteropTestPortType">
  		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  		<operation name="echoString">
  			<soap:operation soapAction="InteropBase#echoString"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoStringArray">
  			<soap:operation soapAction="InteropBase#echoStringArray"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoInteger">
  			<soap:operation soapAction="InteropBase#echoInteger"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoIntegerArray">
  			<soap:operation soapAction="InteropBase#echoIntegerArray"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoFloat">
  			<soap:operation soapAction="InteropBase#echoFloat"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoFloatArray">
  			<soap:operation soapAction="InteropBase#echoFloatArray"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoStruct">
  			<soap:operation soapAction="InteropBase#echoStruct"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoStructArray">
  			<soap:operation soapAction="InteropBase#echoStructArray"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoVoid">
  			<soap:operation soapAction="InteropBase#echoVoid"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoBase64">
  			<soap:operation soapAction="InteropBase#echoBase64"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoDate">
  			<soap:operation soapAction="InteropBase#echoDate"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoHexBinary">
  			<soap:operation soapAction="InteropBase#echoHexBinary"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoDecimal">
  			<soap:operation soapAction="InteropBase#echoDecimal"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoBoolean">
  			<soap:operation soapAction="InteropBase#echoBoolean"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  	</binding>
   	<service name="InteropBase">
      		<port binding="tns:InteropTestSoapBinding" name="InteropBaseTest">
        		<soap:address location="http://localhost/axis/InteropBase"/>
      		</port>
    	</service>
  </definitions>
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/gen_src/rpc/InteropTestPortType.cpp
  
  Index: InteropTestPortType.cpp
  ===================================================================
  /*
   * This file was auto-generated by the Axis C++ Web Service Generator (WSDL2Ws)
   * This file contains Client Stub implementation for remote web service.
   */
  
  #include "InteropTestPortType.h"
  
  #include <axis/server/AxisWrapperAPI.h>
  
  using namespace std;
  
   extern int Axis_DeSerialize_SOAPStruct(SOAPStruct* param, IWrapperSoapDeSerializer* pDZ);
  extern void* Axis_Create_SOAPStruct(SOAPStruct *Obj, bool bArray = false, int nSize=0);
  extern void Axis_Delete_SOAPStruct(SOAPStruct* param, bool bArray = false, int nSize=0);
  extern int Axis_Serialize_SOAPStruct(SOAPStruct* param, IWrapperSoapSerializer* pSZ, bool bArray = false);
  extern int Axis_GetSize_SOAPStruct();
  
  InteropTestPortType::InteropTestPortType(const char* pchEndpointUri, AXIS_PROTOCOL_TYPE eProtocol)
  :Stub(pchEndpointUri, eProtocol)
  {
  }
  
  InteropTestPortType::InteropTestPortType()
  :Stub(" ", APTHTTP)
  {
  	m_pCall->setEndpointURI("http://localhost/axis/InteropBase");
  }
  
  InteropTestPortType::~InteropTestPortType()
  {
  }
  
  
  /*Methods corresponding to the web service methods*/
  
  /*
   * This method wrap the service method echoString
   */
  xsd__string InteropTestPortType::echoString(xsd__string Value0)
  {
  	xsd__string Ret;
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return Ret;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoString");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoString", "http://soapinterop.org/");
  		applyUserPreferences();
  		m_pCall->addParameter((void*)&Value0, "inputString", XSD_STRING);
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoStringResponse", "http://soapinterop.org/"))
  			{
  				Ret = m_pCall->getElementAsString("return", 0);
  			}
  		}
  		m_pCall->unInitialize();
  		return Ret;
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  
  /*
   * This method wrap the service method echoStringArray
   */
  xsd__string_Array InteropTestPortType::echoStringArray(xsd__string_Array Value0)
  {
  	xsd__string_Array RetArray = {NULL, 0};
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return RetArray;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoStringArray");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoStringArray", "http://soapinterop.org/");
  		applyUserPreferences();
  	m_pCall->addBasicArrayParameter((Axis_Array*)(&Value0), XSD_STRING, "inputStringArray");
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoStringArrayResponse", "http://soapinterop.org/"))
  			{
  				RetArray = (xsd__string_Array&)m_pCall->getBasicArray(XSD_STRING, "return", 0);
  			}
  		}
  		m_pCall->unInitialize();
  		return RetArray;
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  
  /*
   * This method wrap the service method echoInteger
   */
  int InteropTestPortType::echoInteger(int Value0)
  {
  	int Ret;
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return Ret;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoInteger");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoInteger", "http://soapinterop.org/");
  		applyUserPreferences();
  		m_pCall->addParameter((void*)&Value0, "inputInteger", XSD_INT);
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoIntegerResponse", "http://soapinterop.org/"))
  			{
  				Ret = m_pCall->getElementAsInt("return", 0);
  			}
  		}
  		m_pCall->unInitialize();
  		return Ret;
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  
  /*
   * This method wrap the service method echoIntegerArray
   */
  xsd__int_Array InteropTestPortType::echoIntegerArray(xsd__int_Array Value0)
  {
  	xsd__int_Array RetArray = {NULL, 0};
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return RetArray;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoIntegerArray");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoIntegerArray", "http://soapinterop.org/");
  		applyUserPreferences();
  	m_pCall->addBasicArrayParameter((Axis_Array*)(&Value0), XSD_INT, "inputIntegerArray");
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoIntegerArrayResponse", "http://soapinterop.org/"))
  			{
  				RetArray = (xsd__int_Array&)m_pCall->getBasicArray(XSD_INT, "return", 0);
  			}
  		}
  		m_pCall->unInitialize();
  		return RetArray;
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  
  /*
   * This method wrap the service method echoFloat
   */
  float InteropTestPortType::echoFloat(float Value0)
  {
  	float Ret;
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return Ret;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoFloat");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoFloat", "http://soapinterop.org/");
  		applyUserPreferences();
  		m_pCall->addParameter((void*)&Value0, "inputFloat", XSD_FLOAT);
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoFloatResponse", "http://soapinterop.org/"))
  			{
  				Ret = m_pCall->getElementAsFloat("return", 0);
  			}
  		}
  		m_pCall->unInitialize();
  		return Ret;
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  
  /*
   * This method wrap the service method echoFloatArray
   */
  xsd__float_Array InteropTestPortType::echoFloatArray(xsd__float_Array Value0)
  {
  	xsd__float_Array RetArray = {NULL, 0};
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return RetArray;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoFloatArray");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoFloatArray", "http://soapinterop.org/");
  		applyUserPreferences();
  	m_pCall->addBasicArrayParameter((Axis_Array*)(&Value0), XSD_FLOAT, "inputFloatArray");
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoFloatArrayResponse", "http://soapinterop.org/"))
  			{
  				RetArray = (xsd__float_Array&)m_pCall->getBasicArray(XSD_FLOAT, "return", 0);
  			}
  		}
  		m_pCall->unInitialize();
  		return RetArray;
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  
  /*
   * This method wrap the service method echoStruct
   */
  SOAPStruct* InteropTestPortType::echoStruct(SOAPStruct* Value0)
  {
  	SOAPStruct* pReturn = NULL;
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return pReturn;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoStruct");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoStruct", "http://soapinterop.org/");
  		applyUserPreferences();
  	m_pCall->addCmplxParameter(Value0, (void*)Axis_Serialize_SOAPStruct, (void*)Axis_Delete_SOAPStruct, "inputStruct", Axis_URI_SOAPStruct);
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoStructResponse", "http://soapinterop.org/"))
  			{
  				pReturn = (SOAPStruct*)m_pCall->getCmplxObject((void*) Axis_DeSerialize_SOAPStruct, (void*) Axis_Create_SOAPStruct, (void*) Axis_Delete_SOAPStruct,"return", 0);
  		}
  		}
  		m_pCall->unInitialize();
  		return pReturn;
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  
  /*
   * This method wrap the service method echoStructArray
   */
  SOAPStruct_Array InteropTestPortType::echoStructArray(SOAPStruct_Array Value0)
  {
  	SOAPStruct_Array RetArray = {NULL, 0};
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return RetArray;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoStructArray");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoStructArray", "http://soapinterop.org/");
  		applyUserPreferences();
  	m_pCall->addCmplxArrayParameter((Axis_Array*)(&Value0), (void*)Axis_Serialize_SOAPStruct, (void*)Axis_Delete_SOAPStruct, (void*) Axis_GetSize_SOAPStruct, "inputStructArray", Axis_URI_SOAPStruct);
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoStructArrayResponse", "http://soapinterop.org/"))
  			{
  				RetArray = (SOAPStruct_Array&)m_pCall->getCmplxArray((void*) Axis_DeSerialize_SOAPStruct, (void*) Axis_Create_SOAPStruct, (void*) Axis_Delete_SOAPStruct, (void*) Axis_GetSize_SOAPStruct, "return", Axis_URI_SOAPStruct);
  			}
  		}
  		m_pCall->unInitialize();
  		return RetArray;
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  
  /*
   * This method wrap the service method echoVoid
   */
  void InteropTestPortType::echoVoid()
  {
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return ;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoVoid");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoVoid", "http://soapinterop.org/");
  		applyUserPreferences();
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoVoidResponse", "http://soapinterop.org/"))
  			{
  			/*not successful*/
  		}
  		}
  		m_pCall->unInitialize();
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  
  /*
   * This method wrap the service method echoBase64
   */
  xsd__base64Binary InteropTestPortType::echoBase64(xsd__base64Binary Value0)
  {
  	xsd__base64Binary Ret;
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return Ret;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoBase64");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoBase64", "http://soapinterop.org/");
  		applyUserPreferences();
  		m_pCall->addParameter((void*)&Value0, "inputBase64", XSD_BASE64BINARY);
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoBase64Response", "http://soapinterop.org/"))
  			{
  				Ret = m_pCall->getElementAsBase64Binary("return", 0);
  			}
  		}
  		m_pCall->unInitialize();
  		return Ret;
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  
  /*
   * This method wrap the service method echoDate
   */
  xsd__dateTime InteropTestPortType::echoDate(xsd__dateTime Value0)
  {
  	xsd__dateTime Ret;
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return Ret;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoDate");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoDate", "http://soapinterop.org/");
  		applyUserPreferences();
  		m_pCall->addParameter((void*)&Value0, "inputDate", XSD_DATETIME);
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoDateResponse", "http://soapinterop.org/"))
  			{
  				Ret = m_pCall->getElementAsDateTime("return", 0);
  			}
  		}
  		m_pCall->unInitialize();
  		return Ret;
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  
  /*
   * This method wrap the service method echoHexBinary
   */
  xsd__hexBinary InteropTestPortType::echoHexBinary(xsd__hexBinary Value0)
  {
  	xsd__hexBinary Ret;
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return Ret;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoHexBinary");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoHexBinary", "http://soapinterop.org/");
  		applyUserPreferences();
  		m_pCall->addParameter((void*)&Value0, "inputHexBinary", XSD_HEXBINARY);
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoHexBinaryResponse", "http://soapinterop.org/"))
  			{
  				Ret = m_pCall->getElementAsHexBinary("return", 0);
  			}
  		}
  		m_pCall->unInitialize();
  		return Ret;
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  
  /*
   * This method wrap the service method echoDecimal
   */
  xsd__decimal InteropTestPortType::echoDecimal(xsd__decimal Value0)
  {
  	xsd__decimal Ret;
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return Ret;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoDecimal");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoDecimal", "http://soapinterop.org/");
  		applyUserPreferences();
  		m_pCall->addParameter((void*)&Value0, "inputDecimal", XSD_DECIMAL);
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoDecimalResponse", "http://soapinterop.org/"))
  			{
  				Ret = m_pCall->getElementAsDecimal("return", 0);
  			}
  		}
  		m_pCall->unInitialize();
  		return Ret;
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  
  /*
   * This method wrap the service method echoBoolean
   */
  xsd__boolean InteropTestPortType::echoBoolean(xsd__boolean Value0)
  {
  	xsd__boolean Ret;
  	char* cFaultcode;
  	char* cFaultstring;
  	char* cFaultactor;
  	char* cFaultdetail;
  	try
  	{
  		if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) 
  			return Ret;
  		m_pCall->setTransportProperty(SOAPACTION_HEADER , "InteropBase#echoBoolean");
  		m_pCall->setSOAPVersion(SOAP_VER_1_1);
  		m_pCall->setOperation("echoBoolean", "http://soapinterop.org/");
  		applyUserPreferences();
  		m_pCall->addParameter((void*)&Value0, "inputBoolean", XSD_BOOLEAN);
  		if (AXIS_SUCCESS == m_pCall->invoke())
  		{
  			if(AXIS_SUCCESS == m_pCall->checkMessage("echoBooleanResponse", "http://soapinterop.org/"))
  			{
  				Ret = m_pCall->getElementAsBoolean("return", 0);
  			}
  		}
  		m_pCall->unInitialize();
  		return Ret;
  	}
  	catch(AxisGenException& e)
  	{
  		int iExceptionCode = e.getExceptionCode();
  		if(AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
  		{
  			throw;
  		}
  		else if (AXIS_SUCCESS == m_pCall->checkFault("Fault","http://localhost/axis/InteropBase" ))//Exception handling code goes here
  		{
  			cFaultcode = m_pCall->getElementAsString("faultcode", 0);
  			cFaultstring = m_pCall->getElementAsString("faultstring", 0);
  			cFaultactor = m_pCall->getElementAsString("faultactor", 0);
  				  cFaultdetail = m_pCall->getElementAsString("faultdetail", 0);
  				  throw AxisGenException(cFaultdetail);
  		}
  		else throw;
  	}
  }
  
  int InteropTestPortType::getFaultDetail(char** ppcDetail)
  {
  	return m_pCall->getFaultDetail(ppcDetail);
  }
  
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/gen_src/rpc/InteropTestPortType.h
  
  Index: InteropTestPortType.h
  ===================================================================
  /*
   * This file was auto-generated by the Axis C++ Web Service Generator (WSDL2Ws)
   * This file contains Client Stub Class for remote web service 
   */
  
  #if !defined(__INTEROPTESTPORTTYPE_CLIENTSTUB_H__INCLUDED_)
  #define __INTEROPTESTPORTTYPE_CLIENTSTUB_H__INCLUDED_
  
  #include <axis/client/Stub.h>
  /*include Exception header files here*/
  #include "SOAPStruct_Array.h"
  #include "SOAPStruct.h"
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  class InteropTestPortType :public Stub
  {
  public:
  	InteropTestPortType(const char* pchEndpointUri, AXIS_PROTOCOL_TYPE eProtocol=APTHTTP);
  	InteropTestPortType();
  public:
  	virtual ~InteropTestPortType();
  public: 
  	xsd__string echoString(xsd__string Value0);
  	xsd__string_Array echoStringArray(xsd__string_Array Value0);
  	int echoInteger(int Value0);
  	xsd__int_Array echoIntegerArray(xsd__int_Array Value0);
  	float echoFloat(float Value0);
  	xsd__float_Array echoFloatArray(xsd__float_Array Value0);
  	SOAPStruct* echoStruct(SOAPStruct* Value0);
  	SOAPStruct_Array echoStructArray(SOAPStruct_Array Value0);
  	void echoVoid();
  	xsd__base64Binary echoBase64(xsd__base64Binary Value0);
  	xsd__dateTime echoDate(xsd__dateTime Value0);
  	xsd__hexBinary echoHexBinary(xsd__hexBinary Value0);
  	xsd__decimal echoDecimal(xsd__decimal Value0);
  	xsd__boolean echoBoolean(xsd__boolean Value0);
  	int getFaultDetail(char** ppcDetail);
  };
  
  #endif /* !defined(__INTEROPTESTPORTTYPE_CLIENTSTUB_H__INCLUDED_)*/
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/gen_src/rpc/SOAPStruct_Array.h
  
  Index: SOAPStruct_Array.h
  ===================================================================
  /*
   * This file was auto-generated by the Axis C++ Web Service Generator (WSDL2Ws)
   * This file contains functions to manipulate complex type SOAPStruct_Array
   */
  
  #if !defined(__SOAPSTRUCT_ARRAY_ARRAY_H__INCLUDED_)
  #define __SOAPSTRUCT_ARRAY_ARRAY_H__INCLUDED_
  
  class SOAPStruct;
  
  typedef struct SOAPStruct_ArrayTag
  {
  	SOAPStruct* m_Array;
  	int m_Size;
  } SOAPStruct_Array;
  
  #endif /* !defined(__SOAPSTRUCT_ARRAY_ARRAY_H__INCLUDED_)*/
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/gen_src/rpc/SOAPStruct.cpp
  
  Index: SOAPStruct.cpp
  ===================================================================
  /*
   * This file was auto-generated by the Axis C++ Web Service Generator (WSDL2Ws)
   * This file contains functions to manipulate complex type SOAPStruct
   */
  
  #include <malloc.h>
  #include "SOAPStruct.h"
  #include <axis/server/AxisWrapperAPI.h>
  
  /*
   * This static method serialize a SOAPStruct type of object
   */
  int Axis_Serialize_SOAPStruct(SOAPStruct* param, IWrapperSoapSerializer* pSZ, bool bArray = false)
  {
  	if (bArray)
  	{
  		pSZ->serialize("<", Axis_TypeName_SOAPStruct, ">", NULL);
  	}
  	else
  	{
  		const AxisChar* sPrefix = pSZ->getNamespacePrefix(Axis_URI_SOAPStruct);
  		pSZ->serialize("<", Axis_TypeName_SOAPStruct, " xsi:type=\"", sPrefix, ":",
  			Axis_TypeName_SOAPStruct, "\" xmlns:", sPrefix, "=\"",
  			Axis_URI_SOAPStruct, "\">", NULL);
  	}
  
  	pSZ->serializeAsElement("varString", (void*)&(param->varString), XSD_STRING);
  	pSZ->serializeAsElement("varInt", (void*)&(param->varInt), XSD_INT);
  	pSZ->serializeAsElement("varFloat", (void*)&(param->varFloat), XSD_FLOAT);
  
  	pSZ->serialize("</", Axis_TypeName_SOAPStruct, ">", NULL);
  	return AXIS_SUCCESS;
  }
  
  /*
   * This static method deserialize a SOAPStruct type of object
   */
  int Axis_DeSerialize_SOAPStruct(SOAPStruct* param, IWrapperSoapDeSerializer* pIWSDZ)
  {
  	param->varString = pIWSDZ->getElementAsString("varString",0);
  	param->varInt = pIWSDZ->getElementAsInt("varInt",0);
  	param->varFloat = pIWSDZ->getElementAsFloat("varFloat",0);
  	return pIWSDZ->getStatus();
  }
  void* Axis_Create_SOAPStruct(SOAPStruct* pObj, bool bArray = false, int nSize=0)
  {
  	if (bArray && (nSize > 0))
  	{
  		if (pObj)
  		{
  			SOAPStruct* pNew = new SOAPStruct[nSize];
  			memcpy(pNew, pObj, sizeof(SOAPStruct)*nSize/2);
  			memset(pObj, 0, sizeof(SOAPStruct)*nSize/2);
  			delete [] pObj;
  			return pNew;
  		}
  		else
  		{
  			return new SOAPStruct[nSize];
  		}
  	}
  	else
  		return new SOAPStruct;
  }
  
  /*
   * This static method delete a SOAPStruct type of object
   */
  void Axis_Delete_SOAPStruct(SOAPStruct* param, bool bArray = false, int nSize=0)
  {
  	if (bArray)
  	{
  		delete [] param;
  	}
  	else
  	{
  		delete param;
  	}
  }
  /*
   * This static method gives the size of SOAPStruct type of object
   */
  int Axis_GetSize_SOAPStruct()
  {
  	return sizeof(SOAPStruct);
  }
  
  SOAPStruct::SOAPStruct()
  {
  	/*do not allocate memory to any pointer members here
  	 because deserializer will allocate memory anyway. */
  }
  
  SOAPStruct::~SOAPStruct()
  {
  	/*delete any pointer and array members here*/
  }
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/gen_src/rpc/SOAPStruct.h
  
  Index: SOAPStruct.h
  ===================================================================
  /*
   * This file was auto-generated by the Axis C++ Web Service Generator (WSDL2Ws)
   * This file contains functions to manipulate complex type SOAPStruct
   */
  
  #if !defined(__SOAPSTRUCT_PARAM_H__INCLUDED_)
  #define __SOAPSTRUCT_PARAM_H__INCLUDED_
  
  #include <axis/server/AxisUserAPI.h>
  
  /*Local name and the URI for the type*/
  static const char* Axis_URI_SOAPStruct = "http://soapinterop.org/xsd";
  static const char* Axis_TypeName_SOAPStruct = "SOAPStruct";
  
  class SOAPStruct
  {
  public:
  	xsd__string varString;
  	int varInt;
  	float varFloat;
  	SOAPStruct();
  	virtual ~SOAPStruct();
  };
  
  #endif /* !defined(__SOAPSTRUCT_PARAM_H__INCLUDED_)*/
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/Makefile.am
  
  Index: Makefile.am
  ===================================================================
  SUBDIRS = test1 test2 test3
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/test1/Makefile.am
  
  Index: Makefile.am
  ===================================================================
  SUBDIRS = rpc
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/test1/rpc/Makefile.am
  
  Index: Makefile.am
  ===================================================================
  bin_PROGRAMS = httpHeaderTest1RPC
  SUBDIRS =
  AM_CPPFLAGS = $(CPPFLAGS)
  httpHeaderTest1RPC_SOURCES = TestClient.cpp  ../../gen_src/rpc/InteropTestPortType.cpp ../../gen_src/rpc/SOAPStruct.cpp 
  
  httpHeaderTest1RPC_LDADD   =  $(LDFLAGS) -laxiscpp_client
  INCLUDES = -I$(AXISCPP_HOME)/include
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/test1/rpc/TestClient.cpp
  
  Index: TestClient.cpp
  ===================================================================
  /*
   *   Copyright 2003-2004 The Apache Software Foundation.
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *       http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *   limitations under the License.
   */
  
  /*
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * @author Roshan Weerasuriya (roshan@opensource.lk, roshanw@jkcsworld.com)
   */
  
  #include <string>
  using namespace std;
  
  #include "../../gen_src/rpc/InteropTestPortType.h"
  
  #define ARRAYSIZE 2
  
  int
  main(int argc, char *argv[])
  {
      int x;
      char buffer1[100];
      char endpoint[256];
      const char *server = "localhost";
      const char *port = "80";
      if (argc == 3)
      {
  	server = argv[1];
  	port = argv[2];
      }
      printf("Usage :\n %s <server> <port>\n\n", argv[0]);
      //sprintf(endpoint, "http://%s:%s/axis/base", server, port);
      //endpoint for Axis CPP sample
      sprintf(endpoint, "http://%s:%s/axis/base", server, port);
      /*Set for HTTP transport */
      InteropTestPortType ws(endpoint, APTHTTP);
  
      //set HTTP headers
      ws.setTransportProperty("Accept-Language", " da, en-gb;q=0.8, en;q=0.7");
  
      printf("Sending Requests to end point %s \n\n", endpoint);
      printf("invoking echoString...\n");
      //testing echoString 
      try {
      if (0 == strcmp(ws.echoString("hello world"), "hello world"))
  	printf("successful\n");
      else
  	printf("failed\n");
      }
      catch(AxisException& e) 
      {
          printf("%s\n", e.what());
      }
      catch(...)
      {
          printf("Unknown exception\n");
      }
  
      printf("Test trasport property accessors\n");
      printf("First trasport key = %s\n", ws.getFirstTrasportPropertyKey());
      printf("First trasport value = %s\n",
             ws.getCurrentTrasportPropertyValue());
  
      //test removing HTTP headers
      ws.deleteTrasportProperty("Accept-Language");
  
      //now the request should not have these removed headers
  
      if (0 == strcmp(ws.echoString("hello world"), "hello world"))
          printf("successful\n");
      else
          printf("failed\n");
  
  
      printf("HTTP Header test end\n");
      return 0;
  }
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/test2/Makefile.am
  
  Index: Makefile.am
  ===================================================================
  SUBDIRS = rpc
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/test2/rpc/Makefile.am
  
  Index: Makefile.am
  ===================================================================
  bin_PROGRAMS = httpHeaderTest2RPC
  SUBDIRS =
  AM_CPPFLAGS = $(CPPFLAGS)
  httpHeaderTest2RPC_SOURCES = TestClient.cpp  ../../gen_src/rpc/InteropTestPortType.cpp ../../gen_src/rpc/SOAPStruct.cpp 
  
  httpHeaderTest2RPC_LDADD   =  $(LDFLAGS) -laxiscpp_client
  INCLUDES = -I$(AXISCPP_HOME)/include
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/test2/rpc/TestClient.cpp
  
  Index: TestClient.cpp
  ===================================================================
  /*
   *   Copyright 2003-2004 The Apache Software Foundation.
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *       http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *   limitations under the License.
   */
  
  /*
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * @author Roshan Weerasuriya (roshan@opensource.lk, roshanw@jkcsworld.com)
   */
  
  #include <string>
  using namespace std;
  
  #include "../../gen_src/rpc/InteropTestPortType.h"
  
  #define ARRAYSIZE 2
  
  int
  main(int argc, char *argv[])
  {
      int x;
      char buffer1[100];
      char endpoint[256];
      const char *server = "localhost";
      const char *port = "80";
      if (argc == 3)
      {
  	server = argv[1];
  	port = argv[2];
      }
      printf("Usage :\n %s <server> <port>\n\n", argv[0]);
      //sprintf(endpoint, "http://%s:%s/axis/base", server, port);
      //endpoint for Axis CPP sample
      sprintf(endpoint, "http://%s:%s/axis/base", server, port);
      /*Set for HTTP transport */
      InteropTestPortType ws(endpoint, APTHTTP);
  
      //set HTTP headers
      ws.setTransportProperty("Accept-Language", " da, en-gb;q=0.8, en;q=0.7");
      ws.setTransportProperty("Accept-Language", "lang2");
      ws.setTransportProperty("Accept-Language", "lang3");
      ws.setTransportProperty("Date", "Sat, 26 Jun 2004 13:32:19 GMT");
  
      printf("Sending Requests to end point %s \n\n", endpoint);
      printf("invoking echoString...\n");
      //testing echoString 
      try {
      if (0 == strcmp(ws.echoString("hello world"), "hello world"))
  	printf("successful\n");
      else
  	printf("failed\n");
      }
      catch(AxisException& e) 
      {
          printf("%s\n", e.what());
      }
      catch(...)
      {
          printf("Unknown exception\n");
      }
  
      printf("Test trasport property accessors\n");
      printf("First trasport key = %s\n", ws.getFirstTrasportPropertyKey());
      printf("First trasport value = %s\n",
             ws.getCurrentTrasportPropertyValue()); 
      char *key = NULL;
      int count = 1;
      while (key = ws.getNextTrasportPropertyKey())
      {
          printf("Next trasport key = %s\n", key);
          printf("Next trasport value = %s\n",
                 ws.getCurrentTrasportPropertyValue());
          count++;
          //test removal of last trasport property
          if (count == 4)
              ws.deleteCurrentTrasportProperty();
      }
  
      //test removing HTTP headers
      ws.deleteTrasportProperty("Accept-Language", 1);
      ws.deleteTrasportProperty("Date");
  
      //now the request should not have these removed headers
      try
      {
      if (0 == strcmp(ws.echoString("hello world"), "hello world"))
          printf("successful\n");
      else
          printf("failed\n");
      }
      catch(AxisException& e)
      {
          printf("%s\n", e.what());
      }
      catch(...)
      {
          printf("Unknown exception\n");
      }
  
  
      printf("HTTP Header test end\n");
      return 0;
  }
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/test3/Makefile.am
  
  Index: Makefile.am
  ===================================================================
  SUBDIRS = rpc
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/test3/rpc/Makefile.am
  
  Index: Makefile.am
  ===================================================================
  bin_PROGRAMS = httpHeaderTest3RPC
  SUBDIRS =
  AM_CPPFLAGS = $(CPPFLAGS)
  httpHeaderTest3RPC_SOURCES = TestClient.cpp  ../../gen_src/rpc/InteropTestPortType.cpp ../../gen_src/rpc/SOAPStruct.cpp 
  
  httpHeaderTest3RPC_LDADD   =  $(LDFLAGS) -laxiscpp_client
  INCLUDES = -I$(AXISCPP_HOME)/include
  
  
  
  1.1                  ws-axis/c/tests/client/httpHeader/test3/rpc/TestClient.cpp
  
  Index: TestClient.cpp
  ===================================================================
  /*
   *   Copyright 2003-2004 The Apache Software Foundation.
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *       http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *   limitations under the License.
   */
  
  /*
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * @author Roshan Weerasuriya (roshan@opensource.lk, roshanw@jkcsworld.com)
   */
  
  #include <string>
  using namespace std;
  
  #include "../../gen_src/rpc/InteropTestPortType.h"
  
  #define ARRAYSIZE 2
  
  int
  main(int argc, char *argv[])
  {
      int x;
      char buffer1[100];
      char endpoint[256];
      const char *server = "localhost";
      const char *port = "80";
      if (argc == 3)
      {
  	server = argv[1];
  	port = argv[2];
      }
      printf("Usage :\n %s <server> <port>\n\n", argv[0]);
      //sprintf(endpoint, "http://%s:%s/axis/base", server, port);
      //endpoint for Axis CPP sample
      sprintf(endpoint, "http://%s:%s/axis/base", server, port);
      /*Set for HTTP transport */
      InteropTestPortType ws(endpoint, APTHTTP);
  
      //set HTTP headers
      ws.setTransportProperty("Accept-Language", " da, en-gb;q=0.8, en;q=0.7");
      ws.setTransportProperty("Accept-Language", "lang2");
      ws.setTransportProperty("Accept-Language", "lang3");
  
      printf("Sending Requests to end point %s \n\n", endpoint);
      printf("invoking echoString...\n");
      //testing echoString 
      try {
      if (0 == strcmp(ws.echoString("hello world"), "hello world"))
  	printf("successful\n");
      else
  	printf("failed\n");
      }
      catch(AxisException& e) 
      {
          printf("%s\n", e.what());
      }
      catch(...)
      {
          printf("Unknown exception\n");
      }
  
      printf("Test trasport property accessors\n");
      printf("First trasport key = %s\n", ws.getFirstTrasportPropertyKey());
      printf("First trasport value = %s\n",
             ws.getCurrentTrasportPropertyValue()); 
      char *key = NULL;
      int count = 1;
      while (key = ws.getNextTrasportPropertyKey())
      {
          printf("Next trasport key = %s\n", key);
          printf("Next trasport value = %s\n",
                 ws.getCurrentTrasportPropertyValue());
          count++;
          //test removal of last trasport property
          if (count == 3)
              ws.deleteCurrentTrasportProperty();
      }
  
      //test removing HTTP headers
      ws.deleteTrasportProperty("Accept-Language", 1);
  
      //now the request should not have these removed headers
      try
      {
      if (0 == strcmp(ws.echoString("hello world"), "hello world"))
          printf("successful\n");
      else
          printf("failed\n");
      }
      catch(AxisException& e)
      {
          printf("%s\n", e.what());
      }
      catch(...)
      {
          printf("Unknown exception\n");
      }
  
  
      printf("HTTP Header test end\n");
      return 0;
  }