1 /* A simple synchronous XML-RPC client written in C. */
6 #include <xmlrpc-c/base.h>
7 #include <xmlrpc-c/client.h>
9 #include "config.h" /* information about this build environment */
11 #define NAME "XML-RPC C Test Client synch_client"
14 static void die_if_fault_occurred (xmlrpc_env *env)
16 if (env->fault_occurred) {
17 fprintf(stderr, "XML-RPC Fault: %s (%d)\n",
18 env->fault_string, env->fault_code);
27 const char ** const argv ATTR_UNUSED) {
30 xmlrpc_value * resultP;
31 const char * state_name;
34 fprintf(stderr, "No arguments");
38 /* Start up our XML-RPC client library. */
39 xmlrpc_client_init(XMLRPC_CLIENT_NO_FLAGS, NAME, VERSION);
41 /* Initialize our error-handling environment. */
42 xmlrpc_env_init(&env);
44 /* Call the famous server at UserLand. */
45 resultP = xmlrpc_client_call(&env, "http://betty.userland.com/RPC2",
46 "examples.getStateName",
47 "(i)", (xmlrpc_int32) 41);
48 die_if_fault_occurred(&env);
50 /* Get our state name and print it out. */
51 xmlrpc_read_string(&env, resultP, &state_name);
52 die_if_fault_occurred(&env);
53 printf("%s\n", state_name);
54 free((char*)state_name);
56 /* Dispose of our result value. */
57 xmlrpc_DECREF(resultP);
59 /* Clean up our error-handling environment. */
60 xmlrpc_env_clean(&env);
62 /* Shutdown our XML-RPC client library. */
63 xmlrpc_client_cleanup();