【发布时间】:2011-02-15 13:12:22
【问题描述】:
我有一些非常简单的 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 错误页面(类似于使用 Web 浏览器访问 https://api.ultradns.net:8755/ 时)。我试过在 OSX 和 Linux 上运行这段代码,结果完全相同,所以我必须得出结论,我只是在这里做错了。有没有人用 Ruby 做 XML-RPC over SSL 的例子?
【问题讨论】: