2011-01-20 67 views

回答

12

原來是這樣的:

xmlrpc = ::XMLRPC::Client.new("foohost") 
xmlrpc.instance_variable_get(:@http).instance_variable_set(:@verify_mode, OpenSSL::SSL::VERIFY_NONE) 

與紅寶石1.9.2工作,但很明顯,在內部被戳,所以真正的答案是」 API不提供這樣的機制,但這裏的黑客「。

0

實際上客戶端已經更新,現在一個人直接訪問HTTP連接: https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/41286/diff/lib/xmlrpc/client.rb

xmlrpc.http.verify_mode = OpenSSL::SSL::VERIFY_NONE 

但最好設定ca_fileca_path。 我仍然看不到將這種配置應用於_async調用的選項。

更新:發現猴子一個解決辦法修補的客戶對象:

xmlrpc_client.http.ca_file = @options[:ca_file] 
    xmlrpc_client.instance_variable_set(:@ca_file, @options[:ca_file]) 
    def xmlrpc_client.net_http(host, port, proxy_host, proxy_port) 
     h = Net::HTTP.new host, port, proxy_host, proxy_port 
     h.ca_file = @ca_file 
     h 
    end 

所以,你既需要,舊的方法和猴子修補。我們還添加一個實例變量,否則新方法不能看到實際值。