我正在尝试使用XMLRPC作为客户端与服务器进行通信(已经编写并证明有效)。服务器具有一个名为“ Test”的函数,该函数接受一个结构参数,该结构参数包含一个单独的“ string”条目。
在客户端,我使用C语言,无法弄清楚为什么我的代码遇到分段错误,并且也不知道实现代码的最佳方法是什么。
这是我所拥有的:
#include <stdio.h>
#include <stdlib.h>
#include <xmlrpc.h>
#include <xmlrpc_client.h>
#define SERVER_URL "http://localhost:1001"
#define NAME "Xmlrpc-c Test Client"
#define VERSION "1.0"
static void dieIfFaultOccurred (xmlrpc_env * const envP) {
if (envP->fault_occurred) {
fprintf(stderr, "ERROR: %s (%d)\n",envP->fault_string, envP->fault_code);
exit(1);
}
}
struct test {
char str[10];
};
int main(int argc, char** argv) {
/* Initialize our error-handling environment. */
xmlrpc_env env;
xmlrpc_env_init(&env);
xmlrpc_value *result;
xmlrpc_int32 sum;
xmlrpc_client * clientP;
struct test rt;
sprintf(rt.str, "hello");
char* methodName = "Test";
printf("\nStarting XML-RPC Client\n\n");
/* Create the global XML-RPC client object. */
xmlrpc_client_init2(&env, XMLRPC_CLIENT_NO_FLAGS, NAME, VERSION, NULL, 0);
dieIfFaultOccurred(&env);
printf("Init Success!\n");
//result = xmlrpc_client_call(&env, SERVER_URL, methodName, "{s:s}", rt);
dieIfFaultOccurred(&env);
printf("Received Result!\n");
xmlrpc_read_int(&env, result, &sum);
dieIfFaultOccurred(&env);
printf("Read Value!\n");
/* 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);
}
现在,它已经超过了初始化步骤,但在客户端调用中遇到了段错误。
有人知道我在做什么错吗?