1
我想使用xml-rpc从WS获取数据。 连接成功,但是当我在name_search方法设置的参数,我有此异常:从php客户端的xml-rpc搜索方法错误
error : Traceback (most recent call last):
File "/home/openerp/odoo/odoo/openerp/service/wsgi_server.py", line 82, in xmlrpc_return
result = openerp.netsvc.dispatch_rpc(service, method, params)
File "/home/openerp/odoo/odoo/openerp/netsvc.py", line 296, in dispatch_rpc
result = ExportService.getService(service_name).dispatch(method, params)
File "/home/openerp/odoo/odoo/openerp/service/web_services.py", line 626, in dispatch
res = fn(db, uid, *params) File "/home/openerp/odoo/odoo/openerp/osv/osv.py", line 132, in wrapper
return f(, dbname, *args, **kwargs)
File "/home/openerp/odoo/odoo/openerp/osv/osv.py", line 199, in
res = ._cr(cr, uid, obj, method, *args, **kw)
File "/home/openerp/odoo/odoo/openerp/osv/osv.py", line 187, in _cr
return getattr(object, method)(cr, uid, *args, **kw)
File "/home/openerp/odoo/esigpen/prison_person/prison_person.py", line 287, in name_search
('identificador', 'ilike', name)] + args
TypeError: can only concatenate list (not "NoneType") to list
我使用PHPXMLRPC-2.2.2库的连接,并通过我送$参数VAL。在这种情况下,我正在发送名称cris。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
require_once('phpxmlrpc-2.2.2/lib/xmlrpc.inc');
require_once('phpxmlrpc-2.2.2/lib/xmlrpcs.inc');
$GLOBALS['xmlrpc_internalencoding']='UTF-8';
$dbname = '*****';
$user = '****';
$password = '****';
$server_url = 'http://23.000.160.000:8069';
$connexion = new xmlrpc_client($server_url . "/xmlrpc/common");
$connexion->setSSLVerifyPeer(0);
$c_msg = new xmlrpcmsg('login');
$c_msg->addParam(new xmlrpcval($dbname, "string"));
$c_msg->addParam(new xmlrpcval($user, "string"));
$c_msg->addParam(new xmlrpcval($password, "string"));
$c_response = $connexion->send($c_msg);
if ($c_response->errno != 0){
echo '<p>error : ' . $c_response->faultString() . '</p>';
}
else{
$uid = $c_response->value()->scalarval();
$val = array (
new xmlrpcval(
array(new xmlrpcval('cris', "string"),
),"array"
),
);
$client = new xmlrpc_client($server_url . "/xmlrpc/object");
$client->setSSLVerifyPeer(0);
$msg = new xmlrpcmsg();
$msg->addParam(new xmlrpcval($dbname, "string"));
$msg->addParam(new xmlrpcval($uid, "int"));
$msg->addParam(new xmlrpcval($password, "string"));
$msg->addParam(new xmlrpcval("prison.person", "string"));
$msg->addParam(new xmlrpcval("name_search", "string"));
$msg->addParam(new xmlrpcval($val, "struct"));
$response = $client->send($msg);
if ($response->errno != 0){
echo '<p>error : ' . $response->faultString() . '</p>';
}
$result = $response->value();
$ids = $result->scalarval();
}
?>
这是Python代码,其中包括:方法来搜索:
https://gist.github.com/name1984/a7e78af7dba738449bc0
谢谢您的帮助。