跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. Php xmlrpc 接口调用实例(商品数据获取)

Php xmlrpc 接口调用实例(商品数据获取)

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
5 帖子 4 发布者 8.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • mrshellyM 离线
    mrshellyM 离线
    mrshelly
    写于 最后由 编辑
    #1

    这两天用OE做后台. 前台用 php 来做WEB 页面的一段小代码
    [code]
    // xmlrpc class
    $rootPath = ".";
    include($rootPath.'/lib/xmlrpc.inc');
    $GLOBALS['xmlrpc_internalencoding']='UTF-8'; // 这里就是解决商品名称中有中文时的乱码问题.

    // 检索参数  大家可以跳过这段代码.
    	$kw = isset($_GET['kw'])?str_replace('\','',trim($_GET['kw'])):"";
    	$kw = json_decode($kw,true);
    	$kw = is_array($kw)?$kw:array();
    
    	$filterArray = array();
    	$confRel = "OR";
    	if(count($kw)>0){
    		foreach($kw as $k=>$v){
    			switch($k){
    				case	"id":
    					$k = ($k=='id')?'id':$k;
    					if(is_array($v) && count($v)>0){
    						for($i=0;$i<count($v);$i++){
    							$filterArray[] = new xmlrpcval(intval($v[$i]), 'int');
    						}
    					}
    				break;
    				case	"confRel"	:
    					$confRel = $v;
    				break;
    			}
    		}
    
    	}
    
    // OpenERP server 配置
    	$cfgXmlrpc = array(
    		'host'=>'localhost',
    		'port'=>'8069',
    		'db'=>'testdb',				// 帐套
    		'user'=>'admin',			// 用户
    		'uid'=>'1',					// 用户ID
    		'pass'=>'admin',				// 用户密码
    	);
    
    // 要获取的字段
    	$fieldArray = array(
    		new xmlrpcval('name', 'string'),	
    		new xmlrpcval('price', 'string'),	
    		new xmlrpcval('default_code', 'string'),
    		new xmlrpcval('variants', 'string'),
    	);
    
    // xmlrpc 实例
    	$client = new xmlrpc_client("{$cfgXmlrpc['host']}:{$cfgXmlrpc['port']}/xmlrpc/object");
    
    	$msg = new xmlrpcmsg('execute');
    	$msg->addParam(new xmlrpcval("{$cfgXmlrpc['db']}", "string"));
    	$msg->addParam(new xmlrpcval("{$cfgXmlrpc['uid']}", "int"));
    	$msg->addParam(new xmlrpcval("{$cfgXmlrpc['pass']}", "string"));
    	$msg->addParam(new xmlrpcval("product.product", "string"));
    	$msg->addParam(new xmlrpcval("read", "string"));
    	$msg->addParam(new xmlrpcval($filterArray, "array"));
    	$msg->addParam(new xmlrpcval($fieldArray, "array"));
    
    // 调用 xmlrpc 接口
    	$resp = $client->send($msg);
    
    // 处理 xmlrpc 返回
    	$retArray = $resp->value()->scalarval();
    
    	$outArray = array();
    	foreach($retArray as $k=>$v){
    		//$outArray[] = intval($v->me['int']);
    		$tmpName = $v->me['struct']['name'];
    		$tmpName = $tmpName->me['string'];
    
    		$tmpPrice = $v->me['struct']['price'];
    		$tmpPrice = floatval($tmpPrice->me['string']);
    
    		$tmpCode = $v->me['struct']['default_code'];
    		$tmpCode = $tmpCode->me['string'];
    
    		$tmpVars = $v->me['struct']['variants'];
    		$tmpVars = $tmpVars->me['string'];
    		$outArray[] = array(
    			'name'=>$tmpName,
    			'price'=>$tmpPrice,
    			'code'=>trim($tmpCode),
    			'vars'=>trim($tmpVars),
    		);
    	}
    
    // $outArray 就是需要的数据了
    

    [/code]

    呵呵.OpenERP 有一个很好的框架以及 很方便的 xmlrpc 接口.在这上面可以很方便地同其它应用程序进行数据交换.

    .... 每次都要重新整理一下代码.

    [[i] 本帖最后由 mrshelly 于 2010-2-5 13:47 编辑 [/i]]

    1 条回复 最后回复
    0
    • JoshuaJ 离线
      JoshuaJ 离线
      Joshua 管理员
      写于 最后由 编辑
      #2

      顶下,:lol XML-RPC接口可以和多种语言相连

      【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

      1 条回复 最后回复
      0
      • L 离线
        L 离线
        ldfoe
        写于 最后由 编辑
        #3

        学习,谢分享!PHP相对熟一些!

        1 条回复 最后回复
        0
        • wjfonhandW 离线
          wjfonhandW 离线
          wjfonhand
          写于 最后由 编辑
          #4

          要是有excel VBA 版的就好了,直接指定对象填充sheet

          GoodERP -- Odoo China fork

          1 条回复 最后回复
          0

          • 登录

          • 没有帐号? 注册

          • 登录或注册以进行搜索。
          • 第一个帖子
            最后一个帖子
          0
          • 版块
          • 标签
          • 热门
          • 用户
          • 群组