我最近更新了savon 2.0.2并且我用它来通过soap发送一些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
任何帮助都将非常感谢!!!
答案 0 :(得分:0)
使用ssl_verify_mode :none
告诉Savon关闭SSL检查。这就是证书被忽略的原因。正如评论中所指出的,可以在the Savon site上找到完整的文档。