Hi, All,
I am trying to set up a web service client using
AXIS2/c. I was able to compile the source code and
call APIs in my C++ application. However, it seems
that I made some mistakes in setting up the client
properly, so that when I try to send a request, I
always get NULL response. I debugged the code and it
is clear to me that the request has never been sent
out. The problem is that I AXIS2/ tries to find the
operation from the service client I created with a
given operation name, but I never created the
operation. Here is my API call:
string operation = "TestOrder";
axutil_qname_t * qname = axutil_qname_create(_env,
operation.c_str(), "", ");
axiom_node_t * node =
axis2_svc_client_send_receive_with_op_qname(_wsf_service_client,
_env, qname, payload);
The returned node is all null. And the problem seems
to occur in the file svc_client.c at the following
lines:
op = axis2_svc_get_op_with_qname(svc_client->svc, env,
op_qname);
if (!op)
{
return NULL;
}
How do I create the operation and set it properly in
the service client? I thought by calling the APIs the
opreation is automatically created.
Thanks much in advance.
V.
Here is my code snippet in greater detail:
============================
string action = "job=TestOrder";
string operation = "TestOrder";
const axis2_char_t* endpoint_address =
"http://ss-w-01-xxxx:8088/Data/servlet/webservices?ver=2.0";
const axis2_char_t *client_home =
AXIS2_GETENV("CLIENT_HOME");
axis2_svc_client_t *_wsf_service_client =
axis2_svc_client_create(_env, client_home);
axis2_endpoint_ref_t *endpoint_ref =
axis2_endpoint_ref_create(_env, endpoint_address);
/* Setup options */
axis2_options_t * _options =
axis2_options_create(_env);
axis2_options_set_to(_options, _env, endpoint_ref);
axis2_options_set_soap_version(_options, _env,
AXIOM_SOAP11);
axis2_options_set_enable_rest(_options, _env,
AXIS2_FALSE);
axiom_node_t * payload = root_node;
axis2_status_t status = AXIS2_FAILURE;
if (action != "")
{
if (axis2_options_get_soap_version(_options, _env)
== AXIOM_SOAP11)
{
axutil_string_t * soap_action =
axutil_string_create(_env, action.c_str());
status =
axis2_options_set_soap_action(_options, _env,
soap_action);
axutil_string_free(soap_action, _env);
}
else
{
axutil_qname_t * qname =
axutil_qname_create(_env, AXIS2_MODULE_ADDRESSING,
NULL, NULL);
axis2_bool_t engaged =
axis2_svc_is_module_engaged(axis2_svc_client_get_svc(_wsf_service_client,
_env), _env, qname);
axutil_qname_free(qname, _env);
if (engaged)
{
status =
axis2_options_set_action(_options, _env,
action.c_str());
}
}
}
status =
axis2_svc_client_set_options(_wsf_service_client,
_env, _options);
axiom_node_t * node;
axutil_qname_t * qname = axutil_qname_create(_env,
operation.c_str(), "", NULL);
node =
axis2_svc_client_send_receive_with_op_qname(_wsf_service_client,
_env, qname, payload);
axutil_qname_free(qname, _env);
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now.
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]