Author: shankar Date: Fri Mar 13 09:26:19 2009 New Revision: 753186 URL: http://svn.apache.org/viewvc?rev=753186&view=rev Log: code added to check MTOM with security
Modified: webservices/rampart/trunk/c/samples/client/sec_echo/echo.c Modified: webservices/rampart/trunk/c/samples/client/sec_echo/echo.c URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/samples/client/sec_echo/echo.c?rev=753186&r1=753185&r2=753186&view=diff ============================================================================== --- webservices/rampart/trunk/c/samples/client/sec_echo/echo.c (original) +++ webservices/rampart/trunk/c/samples/client/sec_echo/echo.c Fri Mar 13 09:26:19 2009 @@ -31,6 +31,9 @@ axiom_node_t * build_om_payload_for_echo_svc_interop(const axutil_env_t *env); +axiom_node_t * +build_om_programatically_mtom(const axutil_env_t * env); + int main(int argc, char** argv) { const axutil_env_t *env = NULL; @@ -79,6 +82,7 @@ axis2_options_set_to(options, env, endpoint_ref); axis2_options_set_action(options, env, "http://example.com/ws/2004/09/policy/Test/EchoRequest"); + /*axis2_options_set_action(options, env, "http://xmlsoap.org/Ping");*/ /*axis2_options_set_action(options, env, @@ -146,6 +150,7 @@ /* Build the SOAP request message payload using OM API.*/ payload = build_om_payload_for_echo_svc(env); + /*axis2_options_set_enable_mtom(options, env, AXIS2_TRUE);*/ /*If not engaged in the client's axis2.xml, uncomment this line*/ /*axis2_svc_client_engage_module(svc_client, env, "rampart");*/ @@ -272,3 +277,62 @@ } return ping_request_om_node; } + +/* build SOAP request message content using OM */ +axiom_node_t * +build_om_programatically_mtom( + const axutil_env_t * env) +{ + axiom_node_t *mtom_om_node = NULL; + axiom_element_t *mtom_om_ele = NULL; + axiom_node_t *image_om_node = NULL; + axiom_element_t *image_om_ele = NULL; + axiom_node_t *file_om_node = NULL; + axiom_element_t *file_om_ele = NULL; + axiom_node_t *data_om_node = NULL; + axiom_text_t *data_text = NULL; + axiom_namespace_t *ns1 = NULL; + axis2_char_t *om_str = NULL; + const axis2_char_t *image_name = "E:/src/C/Axis2C/build/deploy/samples/bin/resources/axis2.jpg"; + const axis2_char_t *to_save_name = "test.jpg"; + axis2_bool_t optimized = AXIS2_TRUE; + + axiom_data_handler_t *data_handler = NULL; + + ns1 = + axiom_namespace_create(env, "http://ws.apache.org/axis2/c/samples/mtom", + "ns1"); + mtom_om_ele = + axiom_element_create(env, NULL, "mtomSample", ns1, &mtom_om_node); + + file_om_ele = + axiom_element_create(env, mtom_om_node, "fileName", ns1, &file_om_node); + axiom_element_set_text(file_om_ele, env, to_save_name, file_om_node); + + image_om_ele = + axiom_element_create(env, mtom_om_node, "image", ns1, &image_om_node); + + /* This is when we directly give file name */ + + data_handler = axiom_data_handler_create(env, image_name, "image/jpeg"); + + /* Uncomment following to set a callback instead of a file */ + + /*data_handler = axiom_data_handler_create(env, NULL, "image/jpeg"); + axiom_data_handler_set_data_handler_type(data_handler, env, AXIOM_DATA_HANDLER_TYPE_CALLBACK); + axiom_data_handler_set_user_param(data_handler, env, (void *)image_name);*/ + + data_text = + axiom_text_create_with_data_handler(env, image_om_node, data_handler, + &data_om_node); + + axiom_text_set_optimize(data_text, env, optimized); + /*axiom_text_set_is_swa(data_text, env, AXIS2_TRUE);*/ + om_str = axiom_node_to_string(mtom_om_node, env); + if (om_str) + { + printf("%s", om_str); + AXIS2_FREE(env->allocator, om_str); + } + return mtom_om_node; +}