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>
httpd.conf
Description: Binary data
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
