We are using AXIS2C (C++ code) to call AXIS2/java based webservice. We are 
using the *PortType.cpp class to make the wsdl call. We are using VisualStudio 
2008 to compile the code to create an exe (which also uses MAPI) 

When we call first function/method/SOAPAction from C++ it goes through fine and 
returns as expected. However everyother SOAPAction after that seems to be using 
the first SOAPAction name, with new parameters (as visible by TCPMON) and hence 
generates an error. We are using http cookies to validate the session. 

Here is the call sequence from C++ side 

*PortType.login(String<username>, String<password>) // sets the cookie 
*PortType.callA (int<someid>, String<somestring>...) 

When we make callA TCPMON shows (not exact but illustration only)

*PortType.login (int<someid>, String<somestring>...) 




We tracked down the generated code and every function generated to wrap a Web 
service in *PortType.cpp includes the following:

        if (NULL==m_pCall->getTransportProperty("SOAPAction",false))
        {
                m_pCall->setTransportProperty(SOAPACTION_HEADER , 
"restoreCustomer");
        }

This code creates the problem where the SOAPAction, once set, never gets 
changed.  We have to comment out the 'if' statement in every case to get around 
this. 

I am pretty sure we are doing something wrong here , don't know what ? 

We looked at example code included with the distribution (and on the web ) for 
example http://ws.apache.org/axis2/c/docs/hello/client/hello.c.html

however methods/functions like following do not exist in our axis2c runtime 
dll. 
axutil_env_create_all()
axis2_options_create()
axutil_strcmp()    
axis2_svc_client_set_options    
build_om_request
axis2_svc_client_send_receive(svc_client, env, payload);

Whar are we doing wrong? 

Amit


      

Reply via email to