I've managed (to some extend) to emulate those scripts with a LiveCode script with the XML-RPC library (everything is fine the "login" method).
But i have an error with another method that involves arrays and/or "struct" [it seemst that revXMLRPC_AddParam doesn't support "struct"]
Is there any PHP or Python guru that could help me to find a solution ?
The XML-RPC library is a wild beast !
************** PHP SCRIPT
Code: Select all
<?
include('xmlrpc.inc');
$arrayVal = array(
'name'=>new xmlrpcval('My Partner', "string") ,
'lang'=>new xmlrpcval('en_US' , "string")
);
$client = new xmlrpc_client("http://localhost:8069/xmlrpc/object");
$msg = new xmlrpcmsg('execute');
$msg->addParam(new xmlrpcval("mydb", "string"));
$msg->addParam(new xmlrpcval("1", "int"));
$msg->addParam(new xmlrpcval("admin", "string"));
$msg->addParam(new xmlrpcval("res.partner", "string"));
$msg->addParam(new xmlrpcval("create", "string"));
$msg->addParam(new xmlrpcval($arrayVal, "struct"));
$resp = $client->send($msg);
if ($resp->faultCode())
echo 'Error: '.$resp->faultString();
else
echo 'Partner '.$resp->value()->scalarval().' created !';
?>
Code: Select all
import xmlrpclib
sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/object')
uid = 1
pwd = 'admin'
dbname='mydb'
partner = {
'name': 'My Partner',
'lang': 'en_US',
}
partner_id = sock.execute(dbname, uid, pwd, 'res.partner', 'create', partner)
Code: Select all
put "execute" into method
put "mydb" into dbname
put "admin" into pwd
put "name" into partner[1] [1]
put "my Partner" into partner[1] [2]
put "lang" into partner[2] [1]
put "en_US" into partner[2] [2]
put revXMLRPC_CreateRequest("localhost","8069","xmlrpc/object","http") into rpc_id -- Create the initial connection.
revXMLRPC_AddParam rpc_id, "string", dbname
revXMLRPC_AddParam rpc_id, "int", 1
revXMLRPC_AddParam rpc_id, "string", pwd
revXMLRPC_AddParam rpc_id, "string", "res.partner"
revXMLRPC_AddParam rpc_id, "string", "create"
revXMLRPC_AddParam rpc_id, "array:string", partner[1]
revXMLRPC_AddParam rpc_id, "array:string", partner[2]
revXMLRPC_SetMethod rpc_id, method -- Specify the method to call.
put revXMLRPC_Execute(rpc_id) into result_id -- Submit & get the results.