簡體   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