3

我最近更新了 savon 2.0.2,并使用它通过肥皂发送一些 xml。我必须使用证书,但在更新新 savon 版本的语法后,证书将被忽略。有人可以帮助我使用新语法 - 我可能遗漏了一些东西......我正在运行 ruby​​ 1.9.3 和 rails 3.2.9

旧(工作)版本:

client = Savon::Client.new do | wsdl |
  wsdl.endpoint = CONFIG['endpoint']
  wsdl.namespace = CONFIG['namespace']
end

  response = client.request(:ns, :getToken) do

    http.auth.ssl.cert = OpenSSL::X509::Certificate.new(
      File.read(Rails.root + "lib/certs/cert.pem"))
    http.auth.ssl.cert_key_file = Rails.root + "lib/certs/key.pem"
    http.auth.ssl.verify_mode = :none

    soap.body = {

      // body
    }
    soap.header={
      "ns:account"=>{
        :login=>CONFIG['login'],
        :password=>CONFIG['password']
      }      
    }
  end

现在我尝试在 2.0.2 中做同样的事情,但它不起作用 - xml 没问题,但证书被忽略了......

到目前为止,我得到了:

  client = Savon.client do
  endpoint CONFIG['endpoint']
  namespace CONFIG['namespace']
  namespace_identifier :ns

  ssl_cert_file OpenSSL::X509::Certificate.new(File.read(Rails.root + "lib/certs/cert.pem"))
  ssl_cert_key_file Rails.root + "lib/certs/key.pem"
  ssl_verify_mode :none


  soap_header(
      "sus:account"=>{
        :login=>CONFIG['login'],
        :password=>CONFIG['password']
      }      
   )

end

response = client.call(:getToken) do

      message(
     // body
        )

end

任何帮助将不胜感激!!!

4

1 回答 1

0

使用ssl_verify_mode :none告诉 Savon 关闭 SSL 检查。这就是为什么证书被忽略的原因。正如评论中所指出的,完整的文档可以在Savon 网站上找到。

于 2013-03-14T14:12:09.553 回答