【问题标题】:How to use PHP7 Ripcord library to get Odoo data?如何使用 PHP7 Ripcord 库获取 Odoo 数据?
【发布时间】:2017-01-03 10:08:46
【问题描述】:

我正在尝试通过 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.', ';
}

我得到这个结果:

核心、日期、libxml、openssl、pcre、zlib、过滤器、哈希、反射、 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、标记器、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

但由于没有答案,我试图提供更多关于我的信息。

【问题讨论】:

    标签: php odoo odoo-8 xml-rpc ripcord


    【解决方案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/>';
    }
    

    【讨论】:

    • forvas,你是怎么做到的?你有什么错误?当我 var_dump($partners) 时,我总是不断得到这个数组 { "faultCode"=> 3, "faultString"=> "Access Denied" } 。此外,当我调用 ripcord::client($url)->start() 方法时,我收到致命错误:Uncaught Ripcord_TransportException: Could not access
    • 我什么都不记得了,除了它起作用了。您为连接选择的用户是否有足够的 Odoo 访问权限来查看您通过查询获得的所有合作伙伴?
    • 是的,我认为它具有访问权限,因为我使用的是 Odoo 试用版。我什至使用上面的代码进行测试,但我无法使其工作。这是我问我的问题的地方,如果您想进一步了解:stackoverflow.com/questions/65916457/…
    • 所以,我决定购买一些模块,并为我的新数据库的 IP 地址打开 8069 端口,它工作了:) 现在我可以推断 Odoo Demo 不工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2016-01-25
    相关资源
    最近更新 更多