You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by da...@apache.org on 2004/11/25 13:34:46 UTC

cvs commit: ws-axis/c/samples/client/ssl_client CalcClient.cpp Calculator.cpp Calculator.h Makefile.am

damitha     2004/11/25 04:34:46

  Modified:    c/samples/client/ssl_client Makefile.am
  Added:       c/samples/client/ssl_client CalcClient.cpp Calculator.cpp
                        Calculator.h
  Log:
  ssl client files added. This is just a normal client. but in future this
  will be helpful for investigating more into ssl
  
  Revision  Changes    Path
  1.8       +3 -6      ws-axis/c/samples/client/ssl_client/Makefile.am
  
  Index: Makefile.am
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/samples/client/ssl_client/Makefile.am,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Makefile.am	7 Apr 2004 08:47:22 -0000	1.7
  +++ Makefile.am	25 Nov 2004 12:34:46 -0000	1.8
  @@ -1,8 +1,5 @@
   bin_PROGRAMS = sslclient
  -SUBDIRS =
  -AM_CFLAGS = $(CFLAGS)
  -#sslclient_SOURCES = InteropBaseClient.c InteropTestPortType.c  SOAPStruct.c
  -sslclient_SOURCES = InteropBaseClient.c InteropTestPortType.c
  -
  -sslclient_LDADD   =  $(LDFLAGS) -lssl
  +AM_CPPFLAGS = $(CPPFLAGS)
  +sslclient_SOURCES = Calculator.cpp CalcClient.cpp
  +sslclient_LDADD   =  @LINKCLIENTLIB@
   INCLUDES = -I$(AXISCPP_HOME)/include
  
  
  
  1.1                  ws-axis/c/samples/client/ssl_client/CalcClient.cpp
  
  Index: CalcClient.cpp
  ===================================================================
  #include "Calculator.h"
  #include <axis/AxisGenException.hpp>
  #include <iostream>
  
  bool IsNumber(const char* p);
  
  static void
  usage (char *programName, char *defaultURL)
  {
      cout << "\nUsage:\n"
  	<< programName << " [-? | div number1 number2 [service_url]] " << endl
  	<< "    -?             Show this help.\n"
  	<< "    service_url    URL of the service.\n"
  	<< "    Default service URL is assumed to be " << defaultURL
  	<<
  	"\n    Could use http://localhost:8080/axis/services/echo to test with Axis Java."
  	<< endl;
  }
  
  int main(int argc, char* argv[])
  {
  	char endpoint[256];
      char original[256];
  	const char* server="localhost";
  	const char* port="80";
  	const char* op = 0;
  	const char* p1 = 0;
  	const char* p2 = 0;
  	int i1=0, i2=0;
      int iResult;
      char* pcDetail;
      pcDetail = 0;
  
      // Set default service URL
      sprintf (endpoint, "https://localhost:443/axis/Calculator");
      sprintf(original, "https://localhost:443/axis/Calculator");
  
  	try
      {
      if( argc ==1 )
      {
          usage(argv[0], endpoint);
          return 2;
      }
  
      if (argc > 1)
      {
          if(!strncmp (argv[1], "-", 1))
  	    {
              // Check for - only so that it works for 
              //-?, -h or --help; -anything 
  
              usage(argv[0], endpoint);
              return 2;
  	    }
          //less than minimum number of args OR greater than maximum number of args
         	else if (argc < 4 || argc > 5)
      	{
  		    usage(argv[0], endpoint);
              return 2;
      	}
          else if (argc == 5)
          {
              sprintf(endpoint, argv[4]);      
          }
      }
  
  	cout << endl << " Using service at " << endpoint << endl << endl;
  	Calculator ws(endpoint);
  
  	op = argv[1];
  	p1 = argv[2];
  	p2 = argv[3];
  
  	if (!IsNumber(p1))
  	{
  		printf("Invalid value for first <parameter>\n\n");
  		usage(original, argv[4]);
          return 2;
  	}
  	if (!IsNumber(p2))
  	{
  		printf("Invalid value for second <parameter>\n\n");
  		usage(original, argv[4]);
          return 2;
  	}
  	
  	i1 = atoi(p1);
  	i2 = atoi(p2);
  
  	if (strcmp(op, "add") == 0)
  	{
                  iResult = ws.add(i1, i2);
                  ws.getFaultDetail(&pcDetail);
                  printf("%d\n", iResult);
                  /*printf("pcDetail:%s\n", pcDetail);*/
  	}
  	else 	if (strcmp(op, "sub") == 0)
  	{
  		iResult = ws.sub(i1, i2);
          printf("%d\n", iResult);
  		ws.getFaultDetail(&pcDetail);
          /*printf("pcDetail:%s\n", pcDetail);*/
  	}
  	else 	if (strcmp(op, "mul") == 0)
  	{
  	        iResult = ws.mul(i1, i2);
              printf("%d\n", iResult);
  			ws.getFaultDetail(&pcDetail);
              /*printf("pcDetail:%s\n", pcDetail);*/
  	}
  	else 	if (strcmp(op, "div") == 0)
  	{
  		iResult = ws.div(i1, i2);
          printf("%d\n", iResult);
  		ws.getFaultDetail(&pcDetail);
          /*printf("pcDetail:%s\n", pcDetail);*/
  	}
  	else 
  	{
  		printf("Invalid operation %s\n\n", op);
  		usage(original, argv[4]);
          return 2;
  	}
          }
          catch(AxisException& e)
          {
              printf("Exception : %s\n", e.what());
          }
          catch(exception& e)
          {
              printf("Unknown exception has occured\n" );
          }
  	catch(...)
          {
              printf("Unknown exception has occured\n" );
          }
  	return 0;
  }
  
  bool IsNumber(const char* p)
  {
  	for (int x=0; x < strlen(p); x++)
  	{
  		if (!isdigit(p[x])) return false;
  	}
  	return true;
  }
  
  
  
  1.1                  ws-axis/c/samples/client/ssl_client/Calculator.cpp
  
  Index: Calculator.cpp
  ===================================================================
  /*
   * This is the Client Stub implementation file genarated by WSDL2Ws tool.
   * Calculator.cpp: implemtation for the Calculator.
   *
   */
  
  #include "Calculator.h"
  
  #include <axis/AxisWrapperAPI.hpp>
  
  AXIS_CPP_NAMESPACE_USE
  
  bool CallBase::bInitialized;
  //CallFunctions CallBase::ms_VFtable;
  Calculator::Calculator(const char* pchEndpointUri)
  {
  	m_pCall = new Call();
  	m_pCall->setProtocol(APTHTTP1_1);
  	m_pCall->setEndpointURI(pchEndpointUri);
  }
  
  Calculator::~Calculator()
  {
  	delete m_pCall;
  }
  
  
  /*Methods corresponding to the web service methods*/
  
  /*
   * This method wrap the service methodadd
   */
  int Calculator::add(int Value0, int Value1)
  {
  	int Ret;
  	if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) return Ret;
  	m_pCall->setTransportProperty(SOAPACTION_HEADER , "Calculator#add");
  	m_pCall->setSOAPVersion(SOAP_VER_1_1);
  	m_pCall->setOperation("add", "http://localhost/axis/Calculator");
  	m_pCall->addParameter((void*)&Value0, "in0", XSD_INT);
  	m_pCall->addParameter((void*)&Value1, "in1", XSD_INT);
  	if (AXIS_SUCCESS == m_pCall->invoke())
  	{
  		if(AXIS_SUCCESS == m_pCall->checkMessage("addResponse", "http://localhost/axis/Calculator"))
  		{
  			Ret = m_pCall->getElementAsInt("addReturn", 0);
                          printf("Ret:%d\n", Ret);
  		}
  	}
  	m_pCall->unInitialize();
  	return Ret;
  }
  
  
  /*
   * This method wrap the service methodsub
   */
  int Calculator::sub(int Value0, int Value1)
  {
  	int Ret;
  	if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) return Ret;
  	m_pCall->setTransportProperty(SOAPACTION_HEADER , "Calculator#sub");
  	m_pCall->setSOAPVersion(SOAP_VER_1_1);
  	m_pCall->setOperation("sub", "http://localhost/axis/Calculator");
  	m_pCall->addParameter((void*)&Value0, "in0", XSD_INT);
  	m_pCall->addParameter((void*)&Value1, "in1", XSD_INT);
  	if (AXIS_SUCCESS == m_pCall->invoke())
  	{
  		if(AXIS_SUCCESS == m_pCall->checkMessage("subResponse", "http://localhost/axis/Calculator"))
  		{
  			Ret = m_pCall->getElementAsInt("subReturn", 0);
  			printf("Ret:%d\n", Ret);
  		}
  	}
  	m_pCall->unInitialize();
  	return Ret;
  }
  
  
  /*
   * This method wrap the service methodmul
   */
  int Calculator::mul(int Value0, int Value1)
  {
  	int Ret;
  	if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) return Ret;
  	m_pCall->setTransportProperty(SOAPACTION_HEADER , "Calculator#mul");
  	m_pCall->setSOAPVersion(SOAP_VER_1_1);
  	m_pCall->setOperation("mul", "http://localhost/axis/Calculator");
  	m_pCall->addParameter((void*)&Value0, "in0", XSD_INT);
  	m_pCall->addParameter((void*)&Value1, "in1", XSD_INT);
  	if (AXIS_SUCCESS == m_pCall->invoke())
  	{
  		if(AXIS_SUCCESS == m_pCall->checkMessage("mulResponse", "http://localhost/axis/Calculator"))
  		{
  			Ret = m_pCall->getElementAsInt("addReturn", 0);
  			printf("Ret:%d\n", Ret);
  		}
  	}
  	m_pCall->unInitialize();
  	return Ret;
  }
  
  
  /*
   * This method wrap the service methoddiv
   */
  int Calculator::div(int Value0, int Value1)
  {
  	int Ret;
  	if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) return Ret;
  	m_pCall->setTransportProperty(SOAPACTION_HEADER , "Calculator#div");
  	m_pCall->setSOAPVersion(SOAP_VER_1_1);
  	m_pCall->setOperation("div", "http://localhost/axis/Calculator");
  	m_pCall->addParameter((void*)&Value0, "in0", XSD_INT);
  	m_pCall->addParameter((void*)&Value1, "in1", XSD_INT);
  	if (AXIS_SUCCESS == m_pCall->invoke())
  	{
  		if(AXIS_SUCCESS == m_pCall->checkMessage("divResponse", "http://localhost/axis/Calculator"))
  		{
  			Ret = m_pCall->getElementAsInt("addReturn", 0);
  			printf("Ret:%d\n", Ret);
  		}
  	}
  	m_pCall->unInitialize();
  	return Ret;
  }
  
  int Calculator::getFaultDetail(char** ppcDetail)
  {
      m_pCall->getFaultDetail(ppcDetail);
  	return 0;
  }
  
  
  
  
  1.1                  ws-axis/c/samples/client/ssl_client/Calculator.h
  
  Index: Calculator.h
  ===================================================================
  /*
   * This is the Client Stub Class genarated by the tool WSDL2Ws
   * Calculator.h: interface for the Calculatorclass.
   *
   */
  #if !defined(__CALCULATOR_CLIENTSTUB_H__OF_AXIS_INCLUDED_)
  #define __CALCULATOR_CLIENTSTUB_H__OF_AXIS_INCLUDED_
  
  #include <axis/client/Stub.hpp>
  #include <axis/client/Call.hpp>
  #include <ctype.h>
  
  AXIS_CPP_NAMESPACE_USE
  
  class Calculator 
  {
  private:
  	Call* m_pCall;
  public:
  	Calculator(const char* pchEndpointUri);
  public:
  	virtual ~Calculator();
  public: 
  	int add(int Value0,int Value1);
  	int sub(int Value0,int Value1);
  	int mul(int Value0,int Value1);
  	int div(int Value0,int Value1);
          int getFaultDetail(char** ppcDetail);
  };
  
  #endif /* !defined(__CALCULATOR_CLIENTSTUB_H__OF_AXIS_INCLUDED_)*/