Skip to Content
Menu
This question has been flagged
1 Reply
9124 Views

Hi all :)


I'm working on Odoo External API for my website using PHP 7.


The XML RPC and OpenSSL extensions are enabled on my server, and the website is even secured (there's the lock icon in the address bar).


For now, we want to test it with Odoo Demo Trial. So in my php code, I have put the same username/password as the one I use to connect to my odoo demo account.


1°) But I'm getting faultCode and faultString (Access Denied)


$url = 'https://lgb-test.odoo.com';  // Odoo Demo Trial
$db = 'lgb-test';
$username = 'johndoe@mywebsiteexample.com'; /* Same Email as the one to connect to https://lgb-test.odoo.com/web/login */
$password = 'mypasswordexample'; /* Same Password as the one to connect to https://lgb-test.odoo.com/web/login */ require_once('ripcord/ripcord.php'); $common = ripcord::client($url.'/xmlrpc/2/common'); $uid = $common->authenticate($db, $username, $password, array()); echo('UID:'); var_dump($uid); echo('<br/>'); $models = ripcord::client("$url/xmlrpc/2/object"); $partners = $models->execute_kw( $db, $uid, $password, 'res.partner', 'search', array( array( array('is_company', '=', true) ) ) ); echo('RESULT:<br/>'); foreach ($partners as $partner) { echo 'partner=['.$partner.']<br/>'; } echo('VAR_DUMP:<br/>'); var_dump($partners);


Output :

UID:bool(false)
RESULT:
partner=[3]
partner=[Access Denied]
VAR_DUMP:
array(2) { ["faultCode"]=> int(3) ["faultString"]=> string(13) "Access Denied" }


2°) When the start( ) method is called, I get Fatal error: Uncaught Ripcord_TransportException: Could not access


require_once('ripcord/ripcord.php');        
$info = ripcord::client('https://lgb-test.odoo.com/start/')->start();

echo 'hello';


Output :

Fatal error: Uncaught Ripcord_TransportException: Could not access https://lgb-test.odoo.com/start/ in /var/www/vhosts/mywebsiteexample.com/preprod.mywebsiteexample.com/ripcord/ripcord_client.php:488 Stack trace: #0 /var/www/vhosts/mywebsiteexample.com/preprod.mywebsiteexample.com/ripcord/ripcord_client.php(228): Ripcord_Transport_Stream->post('https://lgb-tes...', '<?xml version="...') #1 /var/www/vhosts/mywebsiteexample.com/preprod.mywebsiteexample.com/index.php(10): Ripcord_Client->__call('start', Array) #2 {main} thrown in /var/www/vhosts/mywebsiteexample.com/preprod.mywebsiteexample.com/ripcord/ripcord_client.php on line 488


This problem doesn't seem to be an isolated case for years, but I didn't find the right answer yet.

Could anyone help please ?

Avatar
Discard
Author Best Answer

1°) As nobody replied here in the forum, and after few weeks looking for a solution, we decided to purchase some modules, instead of using the Odoo Demo account.


Then, I just changed the credentials for my new database, and also opened the 8069 port for that specific Address. And it worked :)



Code :


$url = 'https://thedatabasename.odoo.com';   // Edited here. And opening the firewall's 8069 port was the last step to make it work :)
$db = 'thedatabasename'; // Edited here $username = 'usernameofthataccount'; // Edited here $password = 'passwordofthataccount'; // Edited here require_once('ripcord/ripcord.php'); $common = ripcord::client($url.'/xmlrpc/2/common'); $uid = $common->authenticate($db, $username, $password, array()); echo('UID:'); var_dump($uid); echo('<br/>'); $models = ripcord::client("$url/xmlrpc/2/object"); $partners = $models->execute_kw( $db, $uid, $password, 'res.partner', 'search', array( array( array('is_company', '=', true) ) ) ); echo('RESULT:<br/>'); foreach ($partners as $partner) { echo 'partner=['.$partner.']<br/>'; } echo('VAR_DUMP:<br/>'); var_dump($partners);


Output :

UID:int(2)
RESULT:
partner=[568]
partner=[570]
partner=[293]
partner=[378]
partner=[526]
VAR_DUMP:
array(193) { [0]=> int(568) [1]=> int(570) [2]=> int(293) [3]=> int(378) [4]=> int(526)}


2°) The start( ) method didn't work with the specific Address though


So, I'm not sure that the start( ) method will work with something else than a Demo account.

Also, Odoo's Support told me to not include the "/start" part of the URL in the script. But, with or without the "/start" part, it didn't work.



Code :

require_once('ripcord/ripcord.php');
$info = ripcord::client('https://thedatabasename.odoo.com/start')->start();  // Even after using the specific Address (not the demo) and opened the 8069 port, this hasn't worked in my case
echo 'hello';


Output :

Fatal error: Uncaught Ripcord_TransportException: Could not access http://102.16.10.74:8069/start/ in /var/www/vhosts/mywebsiteexample.com/preprod.mywebsiteexample.com/ripcord/ripcord_client.php:488 Stack trace: #0 /var/www/vhosts/mywebsiteexample.com/preprod.mywebsiteexample.com/ripcord/ripcord_client.php(228): Ripcord_Transport_Stream->post('http://102.16.1...', '<?xml version="...') #1 /var/www/vhosts/mywebsiteexample.com/preprod.mywebsiteexample.com/index.php(11): Ripcord_Client->__call('start', Array) #2 {main} thrown in /var/www/vhosts/mywebsiteexample.com/preprod.mywebsiteexample.com/ripcord/ripcord_client.php on line 488


My Conclusion is :

Odoo DEMO has NOT worked for me, even if I followed the instructions from here :

https://www.odoo.com/documentation/14.0/webservices/odoo.html

Avatar
Discard
Related Posts Replies Views Activity
0
Jan 23
4743
1
Feb 19
6739
0
Jul 24
349
1
Sep 19
8186
0
Dec 17
2314