【问题标题】:"read" Data with multiple IDs from OpenERP using java with apache xml-rpc使用带有apache xml-rpc的java从OpenERP“读取”具有多个ID的数据
【发布时间】:2011-02-02 07:57:03
【问题描述】:

您好,我目前正在编写一个使用Apache XML-RPC 连接到 OpenERP 的 servlet。周围没有任何好的资源,Java 示例非常简约,并且在 OpenERP 站点上还远未完成。

有没有人知道我可以在哪里找到关于如何以及在 OpenERP 端调用什么的 API?

我真的很感激!!!

进一步说明,我正在专门寻找有关如何使用 java 输入多个 id 来“读取”数据的语法。

XmlRpcClient client = new XmlRpcClient();
XmlRpcClientConfigImpl clientConfig = new XmlRpcClientConfigImpl();
clientConfig.setEnabledForExtensions(true);
clientConfig.setServerURL(new URL(urlStringObject));
client.setConfig(clientConfig);

Object[] params2 = { "city", "name", "email", "create_date","write_date" };

Vector<Object> arg = new Vector<Object>();

arg.add(database);
arg.add(1);
arg.add(password);
arg.add("res.partner.address");
arg.add("read");
arg.add(9); // <- THE PYTHON SYNTAX SAYS input 'LIST OF IDS' here What is the Jave equivalent???
arg.add(params2);

HashMap ids = (HashMap) client.execute("execute", arg);

更新

/* Search for all ids */
                xmlrpcConfigLogin.setServerURL(new URL(urlStringObject));
                Object[] searchQuery = new Object[] {"id", "!=", -1 };

                Vector queryVector = new Vector();
                queryVector.addElement(searchQuery);

                Object[] params = new Object[] { database, theloginId , password, tableName, "search", queryVector };
                Object[] po_ids = (Object[]) xmlrpcLogin.execute("execute", params);                

                /* Send Read Query */
                Object[] readQuery = {"name"};      

                Vector<Object> arg = new Vector<Object>();      
                arg.add(database);
                arg.add(1);
                arg.add(password);
                arg.add(tableName);
                arg.add("read");
                arg.add(po_ids);
                arg.add(readQuery);         

                HashMap globalMap = new HashMap();

                Object[] hm = (Object[]) xmlrpcLogin.execute("execute", arg);                                   
                for (Object object : hm) {
                    HashMap hash = (HashMap)object;                             
                    globalMap.put("name", hash.get("name"));              
                    _log.info(hash.get("name"));
                }       

如你所见:它需要一个 ID 的 Object[] 作为输入 (po_ids)

【问题讨论】:

    标签: java xml-rpc xmlrpclib openerp


    【解决方案1】:

    我假设您已经阅读了developer book description of XML-RPC。我认为它只是所有methods in the ORM class 的包装。这就是我看到的所有文档。除此之外,我在调试模式下运行 OpenERP 并在LocalService.__call__() 方法中设置一个断点,以查看客户端向服务器发送的参数。 (在server/bin/netsvc.py。)我还看到开发人员只是记录通过该方法发出的每个请求。

    至于如何在 Java 中进行调用,我不熟悉 XmlRpcClient API,但它看起来会接受一个对象数组作为列表,并且可能是任何可枚举的对象。查看description of data types 是否有帮助,并查看word tracker tutorial。它使用Vector 来保存列表参数。

    【讨论】:

    • 嗨,唐感谢您的见解,我已经解决了这个问题,但您提到的其他事情肯定有很大帮助。我找到了一个论坛条目,里面有很多很好的 java 示例 -> openerp.com/forum/topic15581.html
    • 我总是在响应中得到一个 html。你知道吗
    • 我建议你问一个单独的问题,@tejas,包括你正在使用的代码和你得到的响应。
    • 我在这里问了一个问题,stackoverflow.com/questions/20794411/…。 @DonKirkby,您能调查一下并帮助我吗?我从几天开始都在挣扎
    • 你好@mahatmanich,你有上面发送的替代论坛的帖子链接吗?对于 OpenErp 6.1,我需要稍微了解一下。 Odoo 似乎没有迁移旧的论坛帖子。谢谢。
    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    相关资源
    最近更新 更多