我正在尝试使用XML-RPC连接到Odoo 9。我已尝试使用xmlrpc / 2 / common,xmlrpc / common和各种其他组合的url。我只是试图通过传递version()来获取版本,因此身份验证不是问题。我正在使用Nginx作为反向代理,我尝试禁用Nginx并使用各种端口(包括配置中的端口)直接连接到Odoo。我的配置文件中启用了XML-RPC。
未能发布到Odoo论坛,并且没有从IRC频道获得答案。我现在已经花了两天时间才能真正使用它。
任何人都可以确认xdorpc / 2 / common是Odoo 9上的正确路径吗?
在我知道可以尝试连接的某个地方是否有一个Odoo实例?
答案 0 :(得分:1)
这似乎是一个网络问题。要解决这个问题,您应该真正可以访问理想的防火墙,Web服务器日志(在您的情况下为nginx)和odoo日志。我假设你至少有你的网络服务器日志和odoo日志。检查您的配置和启动脚本,以确定您正在运行xmlrpc的端口。
执行xmlrpc命令时,查看odoo上的传入请求(确保将日志记录设置为info或甚至更好的debug_rpc_answer)。有关日志记录的文档,请查看this。您至少应该在日志中看到请求成功与否。如果您根本没有看到请求,则nginx无法正常转发(或防火墙阻止)。
您确实希望在每个点验证您的请求正在通过,然后在另一端验证响应。您的防火墙可以允许请求,但如果配置为阻止传出请求。
import xmlrpclib
url = "localhost:8069"
common = xmlrpclib.ServerProxy('{}/xmlrpc/2/common'.format(url))
common.version()
如果您无法在运行odoo服务器的主机上运行此功能,则会关闭。检查端口或是否在配置中启用了xmlrpc = True。从那里,您可以从另一台计算机执行,然后介绍您的网络服务器。
答案 1 :(得分:1)
Odoo版本10:
检查您的Odoo配置文件或命令行
xmlrpc_interface = 0.0.0.0
xmlrpc = True
xmlrpc-port = 8069
运行此python代码:
import xmlrpclib
common = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/2/common')
print common.version()
答案 2 :(得分:0)
此问题的一个可能原因是,您需要确保url仅访问一个数据库。 因为在调用common.version()时无法指定数据库。 为此,您可以使用