我有试图通过SSL做XML-RPC一些很简单的Ruby代码:XML-RPC在使用Ruby SSL:到达文件结尾(的EOFError)
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通过SSL进行XML-RPC的例子?
我的理解是,交易和会话标签是可选的。但即使我发送了无效请求,我是否也不应该得到某种错误?无论如何,现在它可能是一个有争议的问题,因为UltraDNS建议使用他们的新SOAP API。 http://www.ultradns.net/api/NUS_API_XML_SOAP.pdf – 2010-05-06 15:27:34