设为首页 加入收藏

TOP

Odoo(OpenERP)开发实践:通过XML-RPC接口访问Odoo数据库
2015-11-21 00:56:27 来源: 作者: 【 】 浏览:2
Tags:Odoo OpenERP 开发 实践 通过 XML-RPC 接口 访问 数据库

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
 * by WeiChen
 *
 */
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 partners = Arrays.asList((Object[])client.execute(execute_kw, Arrays.asList(
				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 customers = Arrays.asList((Object[]) client.execute( 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
    
     参考资料:
     

?

?

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 1285 确定比赛名次(给一个拓.. 下一篇uvalive 4986(三分查找)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: