我试图通过XMLRPC从Odoo获取一些数据,我正在使用PHP及其Ripcord库(推荐在https://www.odoo.com/documentation/8.0/api_integration.html上)。
所以我按照该页面上的步骤进行操作。
首先,我从https://github.com/poef/ripcord.git下载了Ripcord文件。我将它们保存在名为 ripcord 的文件夹中,该文件夹位于我的PHP页面的索引目录中。
其次,我为PHP7启用了OpenSSL和XMLRPC扩展。我想我做得很好,因为如果我执行下一句话:
$modules = get_loaded_extensions();
foreach ($modules as $module) {
echo $module.', ';
}
我得到了这个结果:
Core,date,libxml, openssl ,pcre,zlib,filter,hash,Reflection, SPL,会话,标准,apache2handler,mysqlnd,PDO,xml,日历, ctype,curl,dom,mbstring,fileinfo,ftp,gd,gettext,iconv,json, exif,mcrypt,mysqli,pdo_mysql,Phar,posix,readline,shmop, SimpleXML,套接字,sysvmsg,sysvsem,sysvshm,tokenizer,wddx, xmlreader, xmlrpc ,xmlwriter,xsl,Zend OPcache,
现在,这是我的index.php的代码:
$url = 'http://localhost:30080';
$db = 'db_v80_test_01';
$username = 'admin';
$password = 'adminpwd';
require_once('ripcord/ripcord.php');
// $info = ripcord::client($url)->start();
// list($url, $db, $username, $password) = array($info['host'], $info['database'], $info['user'], $info['password']);
$common = ripcord::client($url.'/xmlrpc/2/common');
$uid = $common->authenticate($db, $username, $password, array());
die($uid);
问题是我在$uid
变量中什么都没得到。谁能告诉我发生了什么?
注意
这个问题可能重复:Odoo API web service doesn't return anything
但由于没有答案,我试图提供更多有关我的信息。
答案 0 :(得分:1)
好的,我没有在php.ini中启用错误日志,所以我总是什么都没得到。如果我之前已经启用它,我会看到错误是我试图打印一种我无法打印的值,所以问题出在die命令中。
现在,它与这段代码完美配合:
$url = 'http://localhost:30080';
$db = 'db_v80_test_01';
$username = 'admin';
$password = 'adminpwd';
require_once('ripcord/ripcord.php');
$common = ripcord::client($url.'/xmlrpc/2/common');
$uid = $common->authenticate($db, $username, $password, array());
$models = ripcord::client("$url/xmlrpc/2/object");
$partners = $models->execute_kw(
$db,
$uid,
$password,
'res.partner',
'search',
array(
array(
array('is_company', '=', true),
array('customer', '=', true)
)
)
);
echo('RESULT:<br/>');
foreach ($partners as $partner) {
echo $partner.'<br/>';
}