Как я могу передать объект хеш-таблицы через xmlrpc-c?

Я использую xmlrpc-c в качестве клиента XMLRPC для своего C-проекта, мой вопрос заключается в том, как я могу передать следующие параметры моему удаленному вызову процедуры?

string1, int1, string2, int2, struct (name : age), string3

Вот инструмент cmdline команды xmlrpc
xmlrpc http://www.oreillynet.com/meerkat/xml-rpc/server.php meerkat.getItems struct/{search:linux,descriptions:i/76,time_period:12hour}

Я хочу передать аналогичный параметр в моем коде.

3 ответа

Решение

Здесь я нашел решение, как...... вот так....

xmlrpc_value *result, *params, *form_value;
xmlrpc_value *form2send;

form2send = xmlrpc_struct_new(env); // initialize the new structure
form_value = xmlrpc_build_value(env, "s", "");  // convert emtpy_string to xmlrpc_string
xmlrpc_struct_set_value(env, form2send, form_key, form_value);  // set key/value in structure

params = xmlrpc_build_value(env, "(sisS)", database, uid, password, form2send); // Capital `S` Denotes Structure 
fault_occurred(env, oo_plugin);

Я не думаю, что вы можете, поэтому вам придется разложить структуру на отдельные типизированные параметры, а затем перестроить структуру на другой стороне.

Вы можете использовать составную структуру struct/array: основной структурой будет массив, содержащий данные. Некоторые из них состоят, как структуры. Однако вы должны перекомпоновать хеш-таблицу в принимающей части. Данные в сети будут примерно такими:

<array>
<data>
<value><string>string</string></value>
<value><struct><member><name>name</name></member><member><name>age</name>...
...
Другие вопросы по тегам