Php 使用XML-RPC登录OpenERP
我已经在网上搜索了几天了,但是找不到任何我能理解的东西。我正在寻找从我创建的网站登录OpenERP的方法。我想用用户数据填充字段,然后重定向到OpenERP并用该数据登录 基本上,我想从另一个网页登录到OpenERP。我知道这需要通过XML-RPC调用来完成。但我不知道怎么做 我需要有人给我解释一下。如何使用Xml rpc编程登录? 我已经检查了链接: 但这对我没有帮助Php 使用XML-RPC登录OpenERP,php,openerp,xml-rpc,Php,Openerp,Xml Rpc,我已经在网上搜索了几天了,但是找不到任何我能理解的东西。我正在寻找从我创建的网站登录OpenERP的方法。我想用用户数据填充字段,然后重定向到OpenERP并用该数据登录 基本上,我想从另一个网页登录到OpenERP。我知道这需要通过XML-RPC调用来完成。但我不知道怎么做 我需要有人给我解释一下。如何使用Xml rpc编程登录? 我已经检查了链接: 但这对我没有帮助 谢谢我不确定您希望使用哪种语言,我熟悉PHP调用,因此将在该上下文中向您解释 从技术上讲,没有真正的登录功能。您向API发送参
谢谢我不确定您希望使用哪种语言,我熟悉PHP调用,因此将在该上下文中向您解释 从技术上讲,没有真正的登录功能。您向API发送参数,它将使用用户id进行响应。然后在您进行下一次调用时使用此用户id。因此,如果您收到用户id,“登录”成功,您可以使用该用户id继续。如果登录详细信息不正确,您将收到一个声明不正确的响应
include ("../xmlrpc-3.0.0.beta/lib/xmlrpc.inc"); //the PHP XML RPC library
//GLOBAL VARIABLES
$dbname = 'database_name'; //Name of the DB you want to access
$user = 'admin'; //The user you want to 'login'
$pwd = 'admin'; //The user's password
$url = 'localhost:8069'; //The server of OpenERP
$sock = new xmlrpc_client($url."/xmlrpc/common"); //Sock files location on server
$client = new xmlrpc_client($url."/xmlrpc/object"); //client files location on server
//THE CALL
$sock_msg = new xmlrpcmsg('login'); //Type of message (all other cases use 'execute')
$sock_msg->addParam(new xmlrpcval($dbname, "string")); //1st param - Database
$sock_msg->addParam(new xmlrpcval($user, "string")); //2nd param - Username
$sock_msg->addParam(new xmlrpcval($pwd, "string")); //3rd param - password
$sock_resp = $sock->send($sock_msg); //Sends the message with parrams
if ($sock_resp->errno != 0)
{
//if there is an error
echo 'error.<br>';
}
// if your have successfully logged in, the errno == 0
elseif ($sock_resp->errno == 0)
{
//a user_id will be returned
$sock_val = $sock_resp->value();
$user_id = $sock_val->scalarval();
//YOUR NEXT CALL HERE
}
包括(“../xmlrpc-3.0.0.beta/lib/xmlrpc.inc”)//PHP XML RPC库
//全局变量
$dbname='database_name'//要访问的数据库的名称
$user='admin'//您要“登录”的用户
$pwd='admin'//用户的密码
$url='localhost:8069'//OpenERP的服务器
$sock=newxmlrpc_客户端($url./xmlrpc/common”)//服务器上的Sock文件位置
$client=newxmlrpc_客户端($url./xmlrpc/object”)//客户端文件在服务器上的位置
//电话
$sock_msg=new xmlrpcmsg('login')//消息类型(所有其他情况下使用“执行”)
$sock_msg->addParam(新的xmlrpcval($dbname,“string”))//第一个参数-数据库
$sock_msg->addParam(新的xmlrpcval($user,“string”))//第二个参数-用户名
$sock_msg->addParam(新的xmlrpcval($pwd,“string”))//第三个参数-密码
$sock\u resp=$sock->send($sock\u msg)//用parrams发送消息
如果($sock_resp->errno!=0)
{
//如果有错误
回显“错误。
”;
}
//如果您已成功登录,则errno==0
其他($sock\u resp->errno==0)
{
//将返回一个用户id
$sock_val=$sock_resp->value();
$user_id=$sock_val->scalarval();
//你的下一个电话在这里
}
基本上,将包含用户名和密码等参数的XML-RPC消息发送到OpenERP的“公共”web服务地址
以下是我使用的PHP xmlrpc中的登录函数示例:
<?php
include("xmlrpc.inc");
function login(){
$user = "admin";
$password = "1234";
$dbname = "devel";
$server_url= "http://127.0.0.1:8069/xmlrpc/";
$conn = new xmlrpc_client($server_url . 'common');
$msg = new xmlrpcmsg('login');
$msg->addParam( new xmlrpcval($dbname, "string") );
$msg->addParam( new xmlrpcval($user, "string") );
$msg->addParam( new xmlrpcval($password, "string") );
$resp = $conn->send( $msg );
$val = $resp->value();
$this->id = $val->scalarval();
return $this->id>0 ? $this->id : -1 ;
}
addParam(新的xmlrpcval($dbname,“string”);
$msg->addParam(新的xmlrpcval($user,“string”);
$msg->addParam(新的xmlrpcval($password,“string”);
$resp=$conn->send($msg);
$val=$resp->value();
$this->id=$val->scalarval();
返回$this->id>0$此->id:-1;
}
如果登录失败,它将返回-1,否则将返回OpenERP中的用户ID
与OpenERP的XML-RPC接口很复杂,而且没有很好的文档记录。但是,我写了一本关于使用xmlrpc的详细电子书,在Google Play中搜索“使用PHP XML-RPC库的高级PHP和OpenERP接口”
关于您可以使用print\r($sock\u resp)
将完整响应打印到屏幕上。