2017-01-25 6 views
0

Я пробовал много вещей, но я не в состоянии это сделать. Раньше я работал с савоном в своем приложении, чтобы получить доступ к веб-сервису мыла. Хотя приложение использовало RoR 3 и ruby ​​1.9.3, у меня не было проблем, но поскольку я обновляю свое приложение, чтобы использовать RoR5 и ruby ​​2.2.2, я больше не могу его использовать.RoR Savon: невозможно выполнить проверку подлинности с 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: {}) 

, но не мог один не помог мне, всегда один и тот же ответ: "Требуется проверка подлинности"

Может быть, кто-то знает, как построить pre-emptively auth?

ответ

0

Я понял!

Если кто-то имеет такую ​​же проблему:

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

является неправильной причиной авторизации Params не для мыла заголовка, но заголовок HTTP

Таким образом, мы должны использовать:

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