#define MYPW_URL "https://services.mypw.com/RPC2"
[...]
xmlrpc_value *response;
xmlrpc_env env;
xmlrpc_int returnvalue;
char *errmsg;
/* Obtain TokenID, SiteID, AuthKey, and TokenValue somewhere *
* around here */
/* Setup some stuff for SSL */
struct xmlrpc_curl_xportparms {
const char * network_interface;
xmlrpc_bool no_ssl_verifypeer;
xmlrpc_bool no_ssl_verifyhost;
const char * user_agent;
};
struct xmlrpc_clientparms clientParms;
struct xmlrpc_curl_xportparms curlParms;
curlParms.no_ssl_verifypeer = 1;
curlParms.no_ssl_verifyhost = 1;
curlParms.user_agent = "mypw_app/1.0";
clientParms.transport = "curl";
clientParms.transportparmsP = &curlParms;
clientParms.transportparm_size = XMLRPC_CXPSIZE(user_agent);
/* SSL */
xmlrpc_env_init(&env);
xmlrpc_client_init2(&env, XMLRPC_CLIENT_NO_FLAGS, NAME, VERSION, &clientParms, XMLRPC_CPSIZE(transportparm_size));
/* Send that data into xmlrpc_client_call() */
response = xmlrpc_client_call(&env, MYPW_URL,
"auth.auth", "({s:s,s:s,s:s,s:s})",
"siteid", userinfo.siteid,
"authkey", userinfo.authkey,
"tokenid", userinfo.tokenid,
"tokenvalue", tokenValue);
/* Get the response back and read the components */
xmlrpc_decompose_value(&env,
response,
"{s:i,s:s}",
"code", &returnvalue,
"message", &errmsg);
if (returnvalue == 0)
printf ("mypw_xmlrpc: Success! (%d)\n", returnvalue);
else
printf ("mypw_xmlrpc: Failed: %d -- %s.\n", returnvalue, errmsg);
|