日期:2014-05-16  浏览次数:20666 次

xml-rpc客户端的问题
群里的同志有谁做过xml-rpc啊?现在远程有个xml-rpc接口:int user.getidbyname(string name),这个接口是用c++写的。

我现在需要要用c写个程序调用这个rpc接口,程序我已经写好了,但是有几个地方不知道如何传递参数,哪位朋友可以帮一下忙?

C/C++ code
#include <stdio.h>
#include <xmlrpc.h>
#include <xmlrpc_client.h>
  
void die_if_fault_occurred (xmlrpc_env *env)
{
    /* Check our error-handling environment for an XML-RPC fault. */
    if (env->fault_occurred) {
        fprintf(stderr, "XML-RPC Fault: %s (%d)\n",
                env->fault_string, env->fault_code);
        exit(1);
    }
}

int main (int argc, char** argv)
{
    xmlrpc_env env;
    xmlrpc_value *result;
    xmlrpc_int32 id;
    
    /* Start up our XML-RPC client library. */
    xmlrpc_client_init(XMLRPC_CLIENT_NO_FLAGS, "XML-RPC user.getidbyname client", "0.1");
    xmlrpc_env_init(&env);

    /* Call our XML-RPC server. */
    result = xmlrpc_client_call(&env, "http://10.6.125.253:2600/RPC2",
                                "user.getidbyname", ??????, ????);  [color=#FF0000]//这个函数的后面几个参数如何赋值啊?[/color]
    die_if_fault_occurred(&env);
    
    /* Parse our result value. */
    xmlrpc_parse_value(&env, result, ?????, ?????, ....);  [color=#FF0000]//这里的返回结果如何解析啊?[/color]
    die_if_fault_occurred(&env);

    /* Print out result. */
    printf("the id is %d\n", (int) id);
    
    /* Dispose of our result value. */
    xmlrpc_DECREF(result);

    /* Shutdown our XML-RPC client library. */
    xmlrpc_env_clean(&env);
    xmlrpc_client_cleanup();

    return 0;
}




哪位好心人可以帮一下忙? 谢谢了

------解决方案--------------------
都不会去看一下人家的文档啊,我晕,试试这个

int id 

 result = xmlrpc_client_call(&env, "http://10.6.125.253:2600/RPC2",
"user.getidbyname","s","user的名字"

xmlrpc_read_int(&env, result, &id);