Php xmlrpc 接口调用实例(商品数据获取)
-
这两天用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]]