Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby SOAP 1.9在自签名服务器上失败_Ruby_Soap_Ruby 1.9.3 - Fatal编程技术网

Ruby SOAP 1.9在自签名服务器上失败

Ruby SOAP 1.9在自签名服务器上失败,ruby,soap,ruby-1.9.3,Ruby,Soap,Ruby 1.9.3,我正在将一段代码从Ruby 1.8.7移植到Ruby 1.9.3,作为SOAP客户端。客户机与使用自签名证书的服务器(在本例中为同一台机器)对话,但每当我执行SOAP调用时,它都会失败,出现OpenSSL::SSL:SSLError: /root/.rvm/gems/ruby-1.9.3-p448/gems/httpclient-2.3.4.1/lib/httpclient/session.rb:303: in `connect': SSL_connect returned=1 errno=0

我正在将一段代码从Ruby 1.8.7移植到Ruby 1.9.3,作为SOAP客户端。客户机与使用自签名证书的服务器(在本例中为同一台机器)对话,但每当我执行SOAP调用时,它都会失败,出现
OpenSSL::SSL:SSLError

/root/.rvm/gems/ruby-1.9.3-p448/gems/httpclient-2.3.4.1/lib/httpclient/session.rb:303:
in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B:
certificate verify failed (OpenSSL::SSL::SSLError)
我已经尝试过通过gem安装soap4r(然后我想让它正确地运行)。我也尝试过安装spox repo版本,其他问题表明:

mkdir -pv ${APPSCALE_HOME}/downloads
cd ${APPSCALE_HOME}/downloads
git clone https://github.com/spox/soap4r-spox.git
cd soap4r-spox
ruby setup.rb all
cd ..
rm -rf soap4r-spox
同样的问题,它也失败了。我使用的是UbuntuPrecise,所以我试着通过apt和RVM安装Ruby1.9.3,这两个版本也有同样的问题。最后,由于我有RVM,我还尝试使用Ruby 2.0.0,它也有同样的问题

我可以很好地连接到其他网站(如google、rubygems),所以这不像我看到的其他报告中的问题,他们的证书位于Ruby看不到的地方。有什么想法吗?当然,我使用的代码是(为了可读性而截断):


你真的在谷歌工作吗?
require 'openssl'
require 'soap/rpc/driver'

class UserAppClient
  attr_reader :conn, :ip, :secret


  # The port that the UserAppServer binds to, by default.
  SERVER_PORT = 4343


  def initialize(ip, secret)
    @ip = ip
    @secret = secret

    @conn = SOAP::RPC::Driver.new("https://#{@ip}:#{SERVER_PORT}")
    @conn.add_method("get_all_apps", "secret")
  end

  def get_all_apps(retry_on_except=true)
    all_apps = @conn.get_all_apps(@secret)
    app_list = all_apps.split(":")
    app_list = app_list - [app_list[0]] # first item is a dummy value
    return app_list
  end
end