【发布时间】:2013-04-22 15:02:05
【问题描述】:
我正在尝试理清如何使用 XMLRPC::Client 类的 new3 方法。这就是我所拥有的:
#!/usr/bin/ruby
require "xmlrpc/client"
params = {
host: "https://192.168.1.2",
path: "rpc/api",
port: "443",
proxy_host: "",
proxy_port: "",
user: "username",
password: "password",
use_ssl: "true",
timeout: 300,
}
session = XMLRPC::Client.new3(params)
session.instance_variable_get(:@http).instance_variable_set(:@verify_mode, OpenSSL::SSL::VERIFY_NONE)
sys_ver = session.call('api.systemVersion')
users = session.call("user.listUsers", session)
如果我使用 new2 方法,脚本将连接并返回 404 错误。但是,如果我使用 new3 它会返回
/usr/lib/ruby/1.9.1/net/http.rb:762:in `initialize': Connection refused - connect(2) (Errno::ECONNREFUSED)
from /usr/lib/ruby/1.9.1/net/http.rb:762:in `open'
from /usr/lib/ruby/1.9.1/net/http.rb:762:in `block in connect'
from /usr/lib/ruby/1.9.1/timeout.rb:68:in `timeout'
from /usr/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
from /usr/lib/ruby/1.9.1/net/http.rb:762:in `connect'
from /usr/lib/ruby/1.9.1/net/http.rb:755:in `do_start'
from /usr/lib/ruby/1.9.1/net/http.rb:750:in `start'
from /usr/lib/ruby/1.9.1/xmlrpc/client.rb:535:in `do_rpc'
from /usr/lib/ruby/1.9.1/xmlrpc/client.rb:420:in `call2'
from /usr/lib/ruby/1.9.1/xmlrpc/client.rb:410:in `call'
from sat_test.rb:24:in `<main>'
我是否正确使用了 new3 方法?
另外,如果我改用新方法,是否需要为每个参数(proxy_host=、proxy_port= 等)设置 parameter=value?
【问题讨论】:
-
检查您拥有 XMLRPC 服务器的服务器端。正如消息所说,您无法连接服务器。所以你有网络、防火墙或服务问题恕我直言。
-
我确实考虑过。我可以从运行脚本的计算机连接到服务器的 Web UI。我还关闭了服务器上的 iptables 以确保不会阻塞连接。
-
另外,如果我使用 new2 方法只发送一个 URI,我会收到一个 404 错误,表明它至少正在连接到服务器。这是一个很好的测试,但不值得研究为什么它会发送该错误,因为我需要传递用户名和密码。
-
我认为我遇到的部分问题是我需要建立一个会话然后登录它。我尝试连接的卫星服务器似乎不允许我一次完成所有操作。无论如何,这就是我得到的印象。
-
最终,这似乎是服务器的问题。我也收到了 Perl 脚本的 404 错误。
标签: ruby xmlrpcclient