Hi All,

I am trying to call a web service over the internet. I tried to deploy
and use proof-of-concept services locally and they work fine ( using
simple axis server).
I am trying to call a web service at this location :
http://www.thomas-bayer.com:80/axis2/services/BLZService
This fails with the following error :  Numeber :75 Message Error
occurred in transport
I am not sure why the error is encountered. Attached are the source
files & http conf (trimmed only with axis config) and axis2.xml

Thanks & Regards,
Haresh
#include <stdio.h>
#include <axiom.h>
#include <axis2_util.h>
#include <axiom_soap.h>
#include <axis2_client.h>

axiom_node_t * build_om_request(const axutil_env_t *env);
const axis2_char_t * process_om_response(const axutil_env_t *env, axiom_node_t *node);
axiom_node_t *create_custom_header(const axutil_env_t *env);

int main(int argc, char** argv)
{
    const axutil_env_t *env = NULL;
    const axis2_char_t *address = NULL;
    const axis2_char_t *address1 = NULL;
    axis2_endpoint_ref_t* endpoint_ref = NULL;
    axis2_options_t *options = NULL;
    const axis2_char_t *client_home = NULL;
    axis2_svc_client_t* svc_client = NULL;
    axiom_node_t *payload = NULL;
    axiom_node_t *ret_node = NULL;
    axiom_namespace_t *ns1 = NULL;
    axiom_namespace_t *ns2 = NULL;

    env = axutil_env_create_all("hello_client.log", AXIS2_LOG_LEVEL_TRACE);

    options = axis2_options_create(env);

    address1 ="http://www.thomas-bayer.com:80/axis2/services/BLZService";;
    
    if (argc > 1)
        address = argv[1];
    if (axutil_strcmp(address, "-h") == 0)
    {
        printf("Usage : %s [endpoint_url]\n", argv[0]);
        printf("use -h for help\n");
        return 0;
    }
    printf("Using endpoint : %s\n", address1);
    endpoint_ref = axis2_endpoint_ref_create(env, address1);
    axis2_options_set_to(options, env, endpoint_ref);
    axis2_options_set_action(options, env, address1);

    client_home = AXIS2_GETENV("AXIS2C_HOME");
    if (!client_home && !strcmp(client_home, ""))
        client_home = "../..";

    svc_client = axis2_svc_client_create(env, client_home);
    if (!svc_client)
    {
		printf("Error creating service client\n");
		AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:"
                " %d :: %s", env->error->error_number,
                AXIS2_ERROR_GET_MESSAGE(env->error));
        return -1;
    }

    axis2_svc_client_set_options(svc_client, env, options);
    axis2_options_set_action(options, env, address1);

    payload = build_om_request(env);

    ret_node = axis2_svc_client_send_receive(svc_client, env, payload);

    if (ret_node)
    {
        const axis2_char_t *greeting = process_om_response(env, ret_node);
        if (greeting)
            printf("\nReceived greeting: \"%s\" from service\n", greeting);

        axiom_node_free_tree(ret_node, env);
        ret_node = NULL;
    }
    else
    {
        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:"
                " %d :: %s", env->error->error_number,
                AXIS2_ERROR_GET_MESSAGE(env->error));
        printf("hello client invoke FAILED!  Numeber :%d Message %s \n",env->error->error_number,AXIS2_ERROR_GET_MESSAGE(env->error));
    }

    if (svc_client)
    {
        axis2_svc_client_free(svc_client, env);
        svc_client = NULL;
    }

    if (env)
    {
        axutil_env_free((axutil_env_t *) env);
        env = NULL;
    }

    return 0;
}

axiom_node_t * build_om_request(const axutil_env_t *env)
{
   axiom_node_t* greet_om_node = NULL;
   axiom_element_t * greet_om_ele = NULL;
   axiom_namespace_t *ns0=NULL,*ns2 = NULL,*ns3 = NULL;

   greet_om_ele = axiom_element_create(env, NULL, "greet", NULL, &greet_om_node);
   axiom_element_set_text(greet_om_ele, env, "Hello Server!", greet_om_node);

   return greet_om_node;
}

const axis2_char_t * process_om_response(const axutil_env_t *env, axiom_node_t *node)
{
    axiom_node_t *service_greeting_node = NULL;
    axiom_node_t *tmp_node = NULL;
    axiom_element_t * ele1 = NULL, *ele2 = NULL; 	  
    axiom_attribute_t * attr1 = NULL;
    axiom_node_t *return_node = NULL;
    axutil_hash_index_t * hi = NULL;
    axiom_attribute_t * attr = NULL;
    axutil_hash_t * attr_hash = NULL;
    axiom_node_t * child_node = NULL;
    axiom_element_t * ele3 = NULL;
    axiom_node_t * bored = NULL;
    

    ele3 = (axiom_element_t *)axiom_node_get_data_element(node, env);
    
    if (node)
    {
	service_greeting_node = axiom_node_get_first_child(node, env);
	if (axiom_node_get_node_type(node, env) == AXIOM_ELEMENT)
	{
		ele2 = (axiom_element_t *) axiom_node_get_data_element(node, env);
	}		

	axiom_node_t *p =  axiom_node_get_parent(service_greeting_node,env);
	axiom_node_t *p2 =  axiom_node_get_parent(p,env);
	axiom_node_t *p3 =  axiom_node_get_parent(p2,env);

	if(p3)
	{
		printf("data type element is %d",axiom_node_get_node_type(p3,env));
	}
	axiom_element_t *om_element;
	om_element = (axiom_element_t *)axiom_node_get_data_element(p3, env);
	axis2_char_t *name = axiom_element_get_localname(om_element,env);
	printf(" name of element is %s ", name);


    }
    return NULL;
}

axiom_node_t *create_custom_header(const axutil_env_t *env)
{
    axiom_namespace_t *ns1 = NULL;
    axiom_element_t *ele1   = NULL;

    axiom_node_t *custom_header_node 	= NULL; axiom_element_t *custom_header_ele 	= NULL;
    axiom_node_t *impl_node 		= NULL; axiom_element_t *impl_ele 		= NULL;
    axiom_node_t *from_node 		= NULL; axiom_element_t *from_ele 		= NULL;
    axiom_node_t *version_node 		= NULL; axiom_element_t *version_ele 		= NULL;
    axiom_node_t *cred_node  		= NULL; axiom_element_t *cred_ele 		= NULL;
    axiom_node_t *user_node  		= NULL; axiom_element_t *user_ele 		= NULL;
    axiom_node_t *pwd_node  		= NULL; axiom_element_t *pwd_ele 		= NULL;
    axiom_node_t *to_node  		= NULL; axiom_element_t *to_ele 		= NULL;
    axiom_node_t *sysid_node  		= NULL; axiom_element_t *sysid_ele 		= NULL;
    axiom_node_t *ts_node  		= NULL; axiom_element_t *ts_ele 		= NULL;
    axiom_node_t *echtok_node  		= NULL; axiom_element_t *echtok_ele 		= NULL;
    axiom_node_t *trid_node  		= NULL; axiom_element_t *trid_ele 		= NULL;
    axiom_node_t *action_node  		= NULL; axiom_element_t *action_ele 		= NULL;

    char *systemId = "SysID"; 
    ns1 = axiom_namespace_create(env, "http://org/Header/",NULL);
    custom_header_ele = axiom_element_create(env, NULL, "HTNGHeader", ns1, &custom_header_node);
    from_ele = axiom_element_create(env,custom_header_node,"From",ns1,&from_node);
    impl_ele = axiom_element_create(env, from_node, "SystemId", ns1, &impl_node);
    axiom_element_set_text(impl_ele, env,"lulz", impl_node);
    cred_ele = axiom_element_create(env, custom_header_node, "Credential", ns1, &cred_node);

    user_ele = axiom_element_create(env,cred_node,"User",ns1,&user_node);
    axiom_element_set_text(user_ele, env,"UserName", user_node);

    pwd_ele = axiom_element_create(env,cred_node,"Password",ns1,&pwd_node);
    axiom_element_set_text(pwd_ele, env,"****", pwd_node);

    to_ele= axiom_element_create(env,custom_header_node,"To",ns1,&to_node);
	
    sysid_ele=axiom_element_create(env,to_node,"systemId",ns1,&sysid_node);
    axiom_element_set_text(sysid_ele,env,"System ID",sysid_node);
    
    ts_ele = axiom_element_create(env,custom_header_node,"Timestamp",ns1,&ts_node);
    axiom_element_set_text(ts_ele,env,"DD-MM-YY",ts_node);

    echtok_ele = axiom_element_create(env,custom_header_node,"EchoTok",ns1,&echtok_node);
    axiom_element_set_text(echtok_ele,env,"DD-MM-YY",echtok_node);

    trid_ele = axiom_element_create(env,custom_header_node,"TransactionId",ns1,&trid_node);
    axiom_element_set_text(trid_ele,env,"100",trid_node);

    action_ele = axiom_element_create(env,custom_header_node,"Action",ns1,&action_node);
    axiom_element_set_text(action_ele,env,"stringAct",action_node);
    axiom_namespace_free(ns1, env);
    return custom_header_node;
}



void print_node ( axiom_node_t *ret_node, const axutil_env_t *env)
{
       axis2_char_t *om_str = axiom_node_to_string(ret_node, env);
       if (om_str)
            printf("\nReceived OM : %s\n", om_str);
	else
           printf("iFailed!\n");
}

<axisconfig name="Axis2/C">
    <!-- ================================================= -->
    <!-- Parameters -->
    <!-- ================================================= -->
    <!-- Uncomment following to enable MTOM support globally -->
    <!--parameter name="enableMTOM" locked="false">true</parameter-->

    <!-- Set the suitable size for optimum memory usage when sending large attachments -->
    <!--parameter name="MTOMBufferSize" locked="false">10</parameter-->
    <!--parameter name="MTOMMaxBuffers" locked="false">1000</parameter-->
    <!--parameter name="EnableMTOMServiceCallback" locked="false">true</parameter-->
    <!--parameter name="attachmentDIR" locked="false">/path/to/the/attachment/caching/dir/</parameter-->    
    <!--parameter name="MTOMCachingCallback" locked="false">/path/to/the/caching_callback</parameter-->
    <!--parameter name="MTOMSendingCallback" locked="false">/path/to/the/sending_callback</parameter-->

    <!-- Enable REST -->
    <parameter name="enableREST" locked="false">true</parameter>

    <!-- Uncomment following to persist op_ctx, useful with RM -->
    <!--parameter name="persistOperationContext" locked="false">true</parameter-->

    <!--if you want to extract the service archive file and work with that please uncomment this-->
    <!--else , it wont extract archive file or does not take into consideration if someone drop-->
    <!--exploded directory into /service directory-->
    <!--<parameter name="extractServiceArchive" locked="false">true</parameter>-->


    <!-- ================================================= -->
    <!-- Message Receivers -->
    <!-- ================================================= -->
    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
    <!--messageReceiver mep="INOUT" class="axis2_receivers"/-->

  
    <!-- ================================================= -->
    <!-- Transport Ins -->
    <!-- ================================================= -->
  
    <transportReceiver name="http" class="axis2_http_receiver">
        <parameter name="port" locked="false">6060</parameter>
        <parameter name="exposeHeaders" locked="true">false</parameter>
    </transportReceiver>
  
    <!--transportReceiver name="https" class="axis2_http_receiver">
        <parameter name="port" locked="false">6060</parameter>
        <parameter name="exposeHeaders" locked="true">false</parameter>
    </transportReceiver-->
  
    <!--transportReceiver name="tcp" class="axis2_tcp_receiver">
        <parameter name="port" locked="false">6060</parameter>
    </transportReceiver-->


    <!-- ================================================= -->
    <!-- Transport Outs -->
    <!-- ================================================= -->

    <transportSender name="http" class="axis2_http_sender">
        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
        <parameter name="xml-declaration" insert="false"/>
        <!--parameter name="Keep-Alive" locked="false">true</parameter-->
        <!--parameter name="Transfer-Encoding">chunked</parameter-->
        <!--parameter name="HTTP-Authentication" username="" password="" locked="true"/-->
        <!--parameter name="PROXY" proxy_host="127.0.0.1" proxy_port="8080" proxy_username="" proxy_password="" locked="true"/-->
    </transportSender>

    <!-- Uncomment the following with appropriate parameters to enable the SSL transport sender.
         Also make sure that the appropriate transport receiver is enabled above.-->
    <!--transportSender name="https" class="axis2_http_sender">
        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
        <parameter name="xml-declaration" insert="false"/>
    </transportSender>
    <parameter name="SERVER_CERT">/path/to/ca/certificate</parameter>
    <parameter name="KEY_FILE">/path/to/client/certificate/chain/file</parameter>
    <parameter name="SSL_PASSPHRASE">passphrase</parameter>
    -->

    <!-- Uncomment this one with the appropriate papameters to enable the TCP transport Sender-->
    <!--transportSender name="tcp" class="axis2_tcp_sender">
        <parameter name="PROTOCOL" locked="false">TCP</parameter>
        <parameter name="xml-declaration" insert="false"/>
    </transportSender-->


    <!-- ================================================= -->
    <!-- Global Modules  -->
    <!-- ================================================= -->
    <!-- Comment this to disable Addressing -->
    <module ref="addressing"/>


    <!--Configuring module , providing paramters for modules whether they refer or not-->
    <!--<moduleConfig name="addressing">-->
    <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->
    <!--</moduleConfig>-->

    <!-- ================================================= -->
    <!-- Phases  -->
    <!-- ================================================= -->
    <phaseOrder type="inflow">
        <!-- System pre defined phases       -->
        <phase name="Transport"/>
        <phase name="PreDispatch"/>
        <phase name="Dispatch"/>
        <phase name="PostDispatch"/>
        <!--phase name="Security"/-->
        <!-- End system pre defined phases       -->
        <!-- After PostDispatch phase, module or service author can add any phase as required  -->
        <!-- User defined phases could be added here -->
        <!--phase name="userphase1"/-->
    </phaseOrder>
    <phaseOrder type="outflow">
        <!-- User defined phases could be added here -->
        <!--phase name="userphase1"/-->
        <!--system predefined phase-->
        <phase name="MessageOut"/>
        <!--phase name="Security"/-->
    </phaseOrder>
    <phaseOrder type="INfaultflow">
        <!-- User defined phases could be added here -->
        <!--phase name="userphase1"/-->
    </phaseOrder>
    <phaseOrder type="Outfaultflow">
        <!-- User defined phases could be added here -->
        <!--phase name="userphase1"/-->
        <phase name="MessageOut"/>
    </phaseOrder>
</axisconfig>

Attachment: httpd.conf
Description: Binary data

---------------------------------------------------------------------
To unsubscribe, e-mail: c-user-unsubscr...@axis.apache.org
For additional commands, e-mail: c-user-h...@axis.apache.org

Reply via email to