繁体   English   中英

使用Ruby的SSL上的XML-RPC:到达文件末尾(EOFError)

[英]XML-RPC over SSL with Ruby: end of file reached (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连接(或者反之亦然),这就是我所期望的行为,并且如果更改协议,我确实会得到完全相同的异常。 我所看到的一切都表明在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明确声明该协议与标准XML-RPC客户端不兼容。 您需要在方法调用的顶部添加一个顶级事务和会话标签。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM