Php 使用XML-RPC登录OpenERP

Php 使用XML-RPC登录OpenERP,php,openerp,xml-rpc,Php,Openerp,Xml Rpc,我已经在网上搜索了几天了,但是找不到任何我能理解的东西。我正在寻找从我创建的网站登录OpenERP的方法。我想用用户数据填充字段,然后重定向到OpenERP并用该数据登录 基本上,我想从另一个网页登录到OpenERP。我知道这需要通过XML-RPC调用来完成。但我不知道怎么做 我需要有人给我解释一下。如何使用Xml rpc编程登录? 我已经检查了链接: 但这对我没有帮助 谢谢我不确定您希望使用哪种语言,我熟悉PHP调用,因此将在该上下文中向您解释 从技术上讲,没有真正的登录功能。您向API发送参

我已经在网上搜索了几天了,但是找不到任何我能理解的东西。我正在寻找从我创建的网站登录OpenERP的方法。我想用用户数据填充字段,然后重定向到OpenERP并用该数据登录

基本上,我想从另一个网页登录到OpenERP。我知道这需要通过XML-RPC调用来完成。但我不知道怎么做

我需要有人给我解释一下。如何使用Xml rpc编程登录? 我已经检查了链接:

但这对我没有帮助


谢谢

我不确定您希望使用哪种语言,我熟悉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)
将完整响应打印到屏幕上。