Как я могу передать объект хэш-таблицы через xmlrpc-c? - PullRequest
2 голосов
/ 02 ноября 2010

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 10 ноября 2010

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

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);
0 голосов
/ 02 ноября 2010

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

<array>
<data>
<value><string>string</string></value>
<value><struct><member><name>name</name></member><member><name>age</name>...
...
0 голосов
/ 02 ноября 2010

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

...