[英]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.