我有一些非常简单的 Ruby 代码试图通过 SSL 执行 XML-RPC:
require 'xmlrpc/client'
require 'pp'
server = XMLRPC::Client.new2("https://%s:%d/" % [ 'api.ultradns.net', 8755 ])
pp server.call2('UDNS_OpenConnection', 'sponsor', 'username', 'password')
问题是它总是导致以下 EOFError 异常:
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/protocol.rb:135:in `sysread': end of file reached (EOFError)
所以看起来在做 POST 之后,我没有得到任何回报。有趣的是,如果我尝试在 HTTPS 端口上建立 HTTP 连接(反之亦然),这是我所期望的行为,如果我更改协议,我实际上确实会得到相同的异常。我所看到的一切都表明在 URL 中使用“https://”就足以启用 SSL,但我开始怀疑我是否遗漏了什么。
请注意,即使我在 RPC 中使用的凭据是组成的,我仍希望至少返回一个 XML 错误页面(类似于您使用https://api.ultradns.net:8755/访问网页浏览器)。我试过在 OSX 和 Linux 上运行这段代码,结果完全相同,所以我必须得出结论,我只是在这里做错了。有没有人有任何使用 Ruby 在 SSL 上进行 XML-RPC 的示例?