【问题标题】:Connecting OpenERP with CodeIgniter XML RPC library将 OpenERP 与 CodeIgniter XML RPC 库连接起来
【发布时间】:2012-01-31 07:02:35
【问题描述】:

我有以下Codeigniter XML RPC 代码用于在 OpenERP 数据库中搜索客户,

我正在关注此documentation 以实现搜索
下面的代码工作正常并检索 res.partner 表中的所有记录

    $this->xmlrpc->server('http://localhost/xmlrpc/object',8314);
    $this->xmlrpc->method('execute');   
    //$this->xmlrpc->set_debug(TRUE);       

   $request = array (
           array($this->database, 'string'),
           array($this->userid , 'int'),
           array($this->password, 'string'),  
           array("res.partner", 'string'), 
           array('search', 'string'),
           array(array(), 'array'),
         ); 
   $this->xmlrpc->request($request);
   if ( ! $this->xmlrpc->send_request())
    {
        echo $this->xmlrpc->display_error();
        return -1;
    }
    else 
    {
        //print_r( $this->xmlrpc->display_response());
        $val = $this->xmlrpc->display_response();
        return $val;
    }

现在我只想获取带有name=abc的项目

    $this->xmlrpc->server('http://localhost/xmlrpc/object',8314);
    $this->xmlrpc->method('execute');   
    //$this->xmlrpc->set_debug(TRUE);       
    $attribute = "name";
    $operator = "=";
    $keys="abc";

    $key = array(
        new XML_RPC_Values(array(
            new XML_RPC_Values($attribute , "string"),
            new XML_RPC_Values($operator,"string"),
            new XML_RPC_Values($keys,"string"))
        ,"array"),
    );
   $request = array (
           array($this->database, 'string'),
           array($this->userid , 'int'),
           array($this->password, 'string'),  
           array("res.partner", 'string'), 
           array('search', 'string'),
           $key,
         ); 
   $this->xmlrpc->request($request);
   if ( ! $this->xmlrpc->send_request())
    {
        echo $this->xmlrpc->display_error();
        return -1;
    }
    else 
    {
        //print_r( $this->xmlrpc->display_response());
        $val = $this->xmlrpc->display_response();
        return $val;
    }

这不起作用,并且出现以下错误

A PHP Error was encountered
Severity: Notice
Message: Object of class XML_RPC_Values could not be converted to int
Filename: libraries/Xmlrpc.php
Line Number: 1216


A PHP Error was encountered
Severity: 4096
Message: Object of class XML_RPC_Values could not be converted to string
Filename: libraries/Xmlrpc.php
Line Number: 1360

res.partner 表的所有记录都被检索到结果是一样的

【问题讨论】:

    标签: php codeigniter odoo xml-rpc


    【解决方案1】:

    看起来您的错误在您发送请求之前出现在 PHP 端,而不是在 OpenERP 服务器中。

    我不确定,但您的第二个代码 sn-p 中 "array" 类型字符串的嵌套级别看起来不对。

    这是您的第一个工作 sn-p 的精简版:

           ...
           $request = array (
               ...
               array('search', 'string'),
               array(array(), 'array'),
           ); 
    

    现在这是您的第二个损坏的 sn-p 的版本,我在其中内联了 $key 变量并修剪了一些其他内容:

           $request = array (
               ...
               array('search', 'string'),
               array(
                   new XML_RPC_Values(
                       array(
                           new XML_RPC_Values($attribute , "string"),
                           new XML_RPC_Values($operator,"string"),
                           new XML_RPC_Values($keys,"string")
                       ),
                       "array"
                   ),
               ),
           ); 
    

    您将 XML_RPC_Values 对象作为唯一参数传递给数组。当您传入一个参数时,PHP 是否期望整数长度?如果是这样,则此错误消息是有道理的:

    XML_RPC_Values 类的对象无法转换为 int

    那个外部 XML_RPC_Values 对象甚至是必要的吗?

    【讨论】:

      【解决方案2】:

      不确定这是否是我注意到您的“密钥”没有 $ 的问题。应该是:

      $request = array (
             array($this->database, 'string'),
             array($this->userid , 'int'),
             array($this->password, 'string'),  
             array("res.partner", 'string'), 
             array('search', 'string'),
             $key,
           ); 
      

      【讨论】:

        猜你喜欢
        • 2021-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-08
        • 1970-01-01
        • 1970-01-01
        • 2017-07-13
        • 1970-01-01
        相关资源
        最近更新 更多