RoR Savon:因为红宝石2.2.2无法验证

时间:2017-01-25 14:06:44

标签: ruby-on-rails ruby savon

我尝试了很多东西,但我无法做到。 我曾经在我的应用程序中使用savon来访问soap webservice。虽然该应用程序使用的是RoR 3和ruby 1.9.3,但我没有问题,但是因为我升级了我的应用程序以使用RoR5和ruby 2.2.2,我再也无法使用它了。

当我尝试请求肥皂服务器时,它告诉我"需要身份验证"。

我尝试使用基本身份验证:

    client = Savon.client(wsdl: uri, basic_auth: [user_login, user_password])
    call_response = client.call(:good_types, :message => {})

还有自定义标题:

    realm = Base64.strict_encode64("login:pass")
    client = Savon.client(
       wsdl: uri,
       soap_header: { 'Authorization:' => "Basic #{realm}"},
       log: true,
       log_level: :debug,
       pretty_print_xml: true
   )
   # call the 'getFood' operation
   response = client.call(:good_types, message: {})

但没有人可以帮助我,总是同样的回答:"需要身份验证"

也许有人知道如何建立先发制人的身份验证?

1 个答案:

答案 0 :(得分:0)

我明白了!

如果有人遇到同样的问题:

soap_header: { 'Authorization:' => "Basic #{realm}"} 

是错误的,因为Authorization参数不是针对soap标头而是http标头

所以我们必须使用:

headers: { 'Authorization:' => "Basic #{realm}"}