Hi Frank,

Forgot to mention. Dispatching will consider the namespace of the SOAP
body's first element too in its evaluation if it has no alternative in
locating an operation.

Regards,
Senaka

> Hi Frank,
>
> Since you are using SOAP, the Server will dispatch (recognize the
> service/operation) from the request in the following manner.
>
> 1. Using the request URI,
>
> http://my_host:my_port/axis2/services/my_service/my_operation
>
> Your URI must have the format above. my_port can be optional, and http can
> be tcp and vice versa.
>
> 2. Using the SOAP body.
>
> It assumes that the SOAP body's first element bares the operation name.
>
> 3. Using the SOAP action
>
> Tries to find the operation based on the SOAP action provided.
>
> 4. Using WS-Addressing headers
>
> Uses WS-Addressing headers to do the job if WS-Addressing is enabled.
>
>
> If you use REST instead of SOAP, we have a 5th dispatcher to dispatch a
> RESTful request.
>
> Therefore, you'll have to pay attention to these subcomponents of your
> request. The port I hope is the server port to what you refer, is
> identified by the URI. And, we use Document style only, I believe. Devs,
> please correct me if I missed anything here.
>
> Most of it in Axis2/C should be similar to Axis2/Java as they share the
> same architecture. But, some bits and pieces may vary. However, there are
> changes between Axis/Java and Axis2/Java, so there may be some
> differences.
>
> Regards,
> Senaka
>
>> Hi Senaka,
>>
>> I just tried the API
>> axis2_svc_client_send_receive(_wsf_service_client,_env,
>> payload) and it works. So that means I don't have to
>> set the operation for the client call? How does the
>> server know which operation to perform then?
>>
>> I used axis-j for sometime, I remember that to prepare
>> a client call, I have to set few things to the call
>> object, like the opreation name, the port name, and
>> the soap bindling style (document/literal et cetera).
>> In AXIS2/c service APIs, how does a client set up
>> these things?
>>
>> Thanks again!
>> Frank
>>
>>
>> --- Senaka Fernando <[EMAIL PROTECTED]> wrote:
>>
>>> Hi Frank,
>>>
>>> We do have several working samples that are shipped
>>> with each distribution
>>> and is also available on the svn head.
>>>
>>> Please check inside the samples directory for an
>>> echo sample. I hope that
>>> might solve your issue.
>>>
>>> If not, you simply can call this method.
>>>
>>> node =
>>> axis2_svc_client_send_receive(_wsf_service_client,
>>> _env, payload);
>>>
>>> And, it should work I believe.
>>>
>>> Regards,
>>> Senaka
>>>
>>> > 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]
>>> >
>>> >
>>>
>>>
>>>
>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail:
>>> [EMAIL PROTECTED]
>>> For additional commands, e-mail:
>>> [EMAIL PROTECTED]
>>>
>>>
>>
>>
>>
>>       
>> ____________________________________________________________________________________
>> 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]
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to