axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nandika Jayawardana" <jayaw...@gmail.com>
Subject Re: SOAP Fault Segmentation Fault
Date Wed, 22 Aug 2007 05:47:36 GMT
Hi Edward,
It is not possible to cast axiom_node_t* pointer to axiom_soap_body_t type.
One thing you could do in order to process the fault is following.

Use axis2_svc_client_get_last_response_has_fault check whether the received
message is a fault at client side. Then you can use
axis2_svc_client_get_last_response_soap_envelope
function to obtain the received soap envelope and then obtain the soap body
and soap fault etc from the soap envelope.

Regards
Nandika



On 8/21/07, Liu_Edward@emc.com <Liu_Edward@emc.com> wrote:
>
> I am just to run this snippet of code that I have designed:
>
>         if (axiom_soap_body_has_fault((axiom_soap_body_t*)create_resp,
> env))
>         {
>                 axiom_soap_fault_t* fault =
>                         axiom_soap_body_get_fault(
>                                 (axiom_soap_body_t*)create_resp, env);
>
>                 axiom_soap_fault_code_t* code =
>                         axiom_soap_fault_get_code(fault, env);
>                 axiom_soap_fault_value_t* value =
>                         axiom_soap_fault_code_get_value(code, env);
>                 axis2_char_t* text =
> axiom_soap_fault_value_get_text(value,
>
> env);
>                 printf("\n%s\n", text);
>
>                 axiom_soap_fault_reason_t* reason =
>                         axiom_soap_fault_get_reason(fault, env);
>                 axiom_soap_fault_text_t* reason_text =
>
> axiom_soap_fault_reason_get_first_soap_fault_text(
>                                 reason, env);
>                 axis2_char_t* value_text =
>                         axiom_soap_fault_text_get_text(reason_text,
> env);
>                 printf("\n%s\n", value_text);
>         }
>
> create_resp is type-casted since it is originally an object of type
> axiom_node_t*.  I am trying to test how to process a SOAP fault that the
> client receives from the server.  If I comment out the second portion of
> the if section (the part starting with the code object), I see (null)
> printed out for value_text, which is not what I expected.  When I keep
> in the second portion, I get a segmentation fault on the line:
> axis2_char_t* text = axiom_soap_fault_value_get_text(value, env);  Here
> is the exact part that the error occurs:
>
> Program received signal SIGSEGV, Segmentation fault.
> axiom_node_get_node_type (om_node=0x772e7777772f2f3a, env=0x508340) at
> om_node.c:811
> 811         return om_node->node_type;
>
> Is this an error on my end or bug in the Axis2/C library?  Also, seeing
> (null) for value_text is not correct, as I can see the returning SOAP
> fault payload, and the Value is not null is the payload.  The server is
> supposed to return a SOAP 1.1 message, but the payload is in SOAP 1.2.
> Could that be the issue for the null problem?
>
> Thanks for the help on my two issues!
> Edward
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>
>


-- 
nandika@wso2.com
WSO2 Inc: http://www.wso2.com

Mime
View raw message