ruby - XML-RPC over SSL with Ruby : end of file reached (EOFError)

标签 ruby ssl xml-rpc eoferror

我有一些非常简单的 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 连接(反之亦然),这是我期望的行为,如果我更改协议(protocol),我实际上会得到完全相同的异常。我查看的所有内容都表明在 URL 中使用“https://”足以启用 SSL,但我开始怀疑我是否遗漏了什么。

请注意,尽管我在 RPC 中使用的凭据是伪造的,但我希望至少返回一个 XML 错误页面(类似于您使用网络浏览器访问 https://api.ultradns.net:8755/)。我已经尝试在 OSX 和 Linux 上运行这段代码,结果完全相同,所以我不得不得出结论,我只是在这里做错了什么。有没有人有任何使用 Ruby 通过 SSL 执行 XML-RPC 的示例?

最佳答案

http://www.ultradns.net/api/NUS_API_XML.pdf明确指出该协议(protocol)与标准 XML-RPC 客户端不兼容。您需要在方法调用之上添加顶层事务和 session 标记。

<transaction>
  <methodCall>
     ...
  </methodCall>
</transaction>

所以我猜 ruby​​ xml-rpc 解析器无法解析响应。只是一个理论。您是否尝试过其他 xml-rpc 客户端?

关于ruby - XML-RPC over SSL with Ruby : end of file reached (EOFError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2766889/

相关文章:

ruby-on-rails - 每次使用 Rails 加载后触发 javascript ajax 部分

ruby - 如何提取给定属性的所有值并将它们放入数组中?

ruby-on-rails - 无法从某些位置访问 Heroku 上的 Rails 服务器

openerp - 使用 xmlrpc 更新产品字段 "Quantity On Hand"

ruby-on-rails - 使用 money-rails 自动解析价格

sql - 为什么 Timeout.timeout(sec) 不适用于 activerecord

C# Elastic Beanstalk webapp,找不到与具有 webhttp 绑定(bind)的端点的方案 https 相匹配的基地址。

python-2.7 - 为什么 Flask + SocketIO + Gevent 给我 SSL EOF 错误?

php - 是否可以从插件扩展 Wordpress XMLRPC 接口(interface)?

javascript - XML-RPC Javascript 不支持的方法 ('OPTIONS' )