我尝试了很多东西,但我无法做到。 我曾经在我的应用程序中使用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: {})
但没有人可以帮助我,总是同样的回答:"需要身份验证"
也许有人知道如何建立先发制人的身份验证?
答案 0 :(得分:0)
我明白了!
如果有人遇到同样的问题:
soap_header: { 'Authorization:' => "Basic #{realm}"}
是错误的,因为Authorization参数不是针对soap标头而是http标头
所以我们必须使用:
headers: { 'Authorization:' => "Basic #{realm}"}