diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2005-02-28 21:26:20 (GMT) |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2005-02-28 21:26:20 (GMT) |
commit | 638eb8e68eb22c4dd048d5a225dffb376b701691 (patch) | |
tree | 36c48226149bccbd92881fcd1aa53b8abf2dd974 /Utilities/cmxmlrpc/synch_client.c | |
parent | a5501b11f63c9fbde9a849a362ed6583b75abd75 (diff) | |
download | CMake-638eb8e68eb22c4dd048d5a225dffb376b701691.zip CMake-638eb8e68eb22c4dd048d5a225dffb376b701691.tar.gz CMake-638eb8e68eb22c4dd048d5a225dffb376b701691.tar.bz2 |
ENH: Add example
Diffstat (limited to 'Utilities/cmxmlrpc/synch_client.c')
-rw-r--r-- | Utilities/cmxmlrpc/synch_client.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Utilities/cmxmlrpc/synch_client.c b/Utilities/cmxmlrpc/synch_client.c new file mode 100644 index 0000000..15a608f --- /dev/null +++ b/Utilities/cmxmlrpc/synch_client.c @@ -0,0 +1,62 @@ +/* A simple synchronous XML-RPC client written in C. */ + +#include <stdio.h> + +#include <xmlrpc.h> +#include <xmlrpc_client.h> + +#define NAME "XML-RPC C Test Client" +#define VERSION "0.1" + +static void die_if_fault_occurred (xmlrpc_env *env) +{ + if (env->fault_occurred) { + fprintf(stderr, "XML-RPC Fault: %s (%d)\n", + env->fault_string, env->fault_code); + exit(1); + } +} + + + +int +main(int const argc, + const char ** const argv ATTR_UNUSED) { + + xmlrpc_env env; + xmlrpc_value *result; + char *state_name; + + if (argc-1 > 0) { + fprintf(stderr, "No arguments"); + exit(0); + } + + /* Start up our XML-RPC client library. */ + xmlrpc_client_init(XMLRPC_CLIENT_NO_FLAGS, NAME, VERSION); + + /* Initialize our error-handling environment. */ + xmlrpc_env_init(&env); + + /* Call the famous server at UserLand. */ + result = xmlrpc_client_call(&env, "http://betty.userland.com/RPC2", + "examples.getStateName", + "(i)", (xmlrpc_int32) 41); + die_if_fault_occurred(&env); + + /* Get our state name and print it out. */ + xmlrpc_parse_value(&env, result, "s", &state_name); + die_if_fault_occurred(&env); + printf("%s\n", state_name); + + /* Dispose of our result value. */ + xmlrpc_DECREF(result); + + /* Clean up our error-handling environment. */ + xmlrpc_env_clean(&env); + + /* Shutdown our XML-RPC client library. */ + xmlrpc_client_cleanup(); + + return 0; +} |