2013-03-07 5 views
1

Мне нужно взаимодействовать с сервером XML-RPC, который использует проверку подлинности ключа. Перед принятием запроса сервер проверяет пару ключей (закрытый ключ ssl и ssl cert). Я понимаю, что это ужасно, но с этим я должен работать.Ruby XMLRPC pass keypair

Мой вопрос заключается в следующем: есть ли простой способ передать ключ и сертификат в этом запросе? Я использую xmlrpc/Client в Ruby, но документация, похоже, не указывает, что это можно сделать. Мой текущий код выглядит следующим образом:

Ошибка:

/usr/lib/ruby/1.8/net/http.rb:586:in connect': sslv3 alert handshake failure >(OpenSSL::SSL::SSLError) from /usr/lib/ruby/1.8/net/http.rb:586:in connect' from /usr/lib/ruby/1.8/net/http.rb:553:in do_start' from /usr/lib/ruby/1.8/net/http.rb:542:in start' from /usr/lib/ruby/1.8/net/http.rb:1035:in request' from /usr/lib/ruby/1.8/net/http.rb:992:in post2' from /usr/lib/ruby/1.8/xmlrpc/client.rb:535:in do_rpc' from /usr/lib/ruby/1.8/xmlrpc/client.rb:420:in call2' from /usr/lib/ruby/1.8/xmlrpc/client.rb:410:in `call'

Класс файл:

class RpcRequest 

    require "xmlrpc/client" 

    # Automatically create the connection 
    def initialize(connection_params) 
    @connection = XMLRPC::Client.new(connection_params['host'], connection_params['path'], connection_params['port'], connection_params['proxy_host'], connection_params['proxy_port'], connection_params['user'], connection_params['password'], connection_params['use_ssl'], connection_params['timeout']) 
    end 

    # Make the xml rpc call 
    def make_call(method, request_params) 
     @response = @connection.call(method, request_params) 
    end 

end 

Драйвер файл:

require 'RpcRequest.rb' 
require 'config.rb' 
require 'openssl' 

# Define parameters for the connection 
connect_params = Hash.new 
connect_params['host'] = $host 
connect_params['path'] = $path 
connect_params['port'] = $port 
connect_params['proxy_host'] = $proxy_host 
connect_params['proxy_port'] = $proxy_port 
connect_params['user'] = $user 
connect_params['password'] = $password 
connect_params['use_ssl'] = $use_ssl 
connect_params['timeout'] = $timeout 

# Define parameters for the request 
request_params = Hash.new 
request_params['fname'] = 'Robert' 
request_params['lname'] = 'Jones' 

request = RpcRequest.new(connect_params) 

puts request.inspect 

request.make_call('test.hello', request_params) 

ответ

0

Вы можете взаимодействовать с .http собственностью клиентский экземпляр.

Смежные вопросы