通过XML-RPC接口访问Odoo数据库(Java示例)


通过XML-RPC接口访问Odoo数据库(Java示例)

www.chinamaker.net 2015-12-09 12:30:00 admin

Odoo(OpenERP)服务器支持通过XML-RPC接口访问、操作数据库,基于此可实现与其他系统的交互与集成。

本文是使用Java通过XMLRPC接口操作Odoo数据库的简单示例。本例引用的jar包包括xmlrpc-common-3.1.3.jar, xmlrpc-client-3.1.3.jar和ws-commons-util-1.0.2.jar。
 
package memo.by.weichen;  
  
import java.net.URL;  
import java.util.Arrays;  
import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  
  
import org.apache.xmlrpc.client.XmlRpcClient;  
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;  
  
/** 
 *  
 * 通过XML-RPC接口访问Odoo数据库 
 * Test@Odoo 8.0
 * 
 */  
public class OdooWSDemo {  
    public static final String URL = "http://127.0.0.1:8069";  
    public static final String DB = "demo";  
    public static final int USERID = 1;  
    public static final String PASS = "demo";  
      
    public static void main(String[] args) throws Exception{  
        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();  
        XmlRpcClient client = new XmlRpcClient();  
        config.setServerURL(new URL(String.format("%s/xmlrpc/2/object", URL)));  
        client.setConfig(config);  
          
        // 新建客户  
        Integer id = (Integer) client.execute(  
                "execute_kw", Arrays.asList(  
                        DB, USERID, PASS, "res.partner", "create",  
                        Arrays.asList(new HashMap() {  
                            {  
                                put("name", "苏州园区永旺梦乐城");  
                                put("customer", Boolean.TRUE);  
                            }  
                        })));  
        // 更新客户  
        client.execute("execute_kw", Arrays.asList(  
                DB, USERID, PASS,  
                "res.partner", "write",  
                Arrays.asList(  
                    Arrays.asList(id),  
                    new HashMap() {{ put("name", "永旺梦乐城苏州园区店"); }}  
                )  
            ));  
        // 查找客户  
        List
                DB, USERID, PASS,  
                "res.partner", "name_get",  
                Arrays.asList(Arrays.asList(id))  
            )));  
        if(partners!=null&&partners.size()>0){// partners格式: [[id, name]]  
            Object[] partner = (Object[])partners.get(0);  
            if(partner.length==2)  
            System.out.println("客户名: "+partner[1]);  
        }  
        // 删除客户  
        client.execute("execute_kw", Arrays.asList(  
                DB, USERID, PASS,  
                "res.partner", "unlink",  
                Arrays.asList(Arrays.asList(id))));  
          
        // 客户列表  
        List
                "execute_kw", Arrays.asList(  
                        DB, USERID, PASS, "res.partner", "search_read",  
                        Arrays.asList(Arrays.asList(  
                                // 设置查询条件  
                                // Arrays.asList("is_company", "=", true),  
                                Arrays.asList("customer", "=", true))),  
                        new HashMap() {  
                            {// 查询name字段, 限定最多返回100条记录  
                                put("fields", Arrays.asList("name"));  
                                put("limit", 100);  
                            }  
                        })));  
          
        System.out.println("**********客户列表**********");  
        for (int i=0;i
            Map customer = (Map)customers.get(i);  
            String name = (String)customer.get("name");  
            System.out.println(name);  
        }  
        System.out.println("****************************");  
    }  

来源:苏州远鼎官网


相关标签 TAG :  odoo  XML-RPC接口  访问Odoo数据库  (Java示例)  


苏州远鼎

运用前沿科学技术,苏州远鼎信息技术有限公司以开源管理软件产品为核心,为企业和政府组织提供软件及服务,是OpenERP(Odoo)专业服务商,中国开源管理软件服务市场的领跑者。

Read More

远鼎产品

联系远鼎

  • 苏州工业园区星湖街328号22栋301
  • +86-0512-69361217
  • odoo@chinamaker.net
  • www.chinamaker.net