Savon, Wasabi Ошибка при подключении сценария Ruby к SOAP-URL

Я пытаюсь подключиться к SOAP URL с помощью сценария Ruby.

Я слежу за этим эпизодом Railscasts. Я установил самоцвет savon (savon (2.4.0)).

Тогда в моем файле ruby ​​у меня есть этот код:

 require 'savon'

 client = Savon.client(wsdl:"https://api.comscore.com/KeyMeasures.asmx?WSDL")
 response = client.call(:authenticate , message: { username:"xxxxx", password:"xxxxx"})

 puts "#{response.inspect}"

Я знаю, что с URL нет проблем, потому что я использовал SOAPUI и разместил там URL-адрес WSDL, и я получил ответ.

Когда я запускаю файл ruby ​​выше, я получаю следующее исключение:

  /Users/XXXX/.rvm/gems/ruby-2.0.0-p247/gems/wasabi-3.2.3/lib/wasabi/resolver.rb:44:in `load_from_remote': Error: 401 (Wasabi::Resolver::HTTPError)
from /Users/XXXXX/.rvm/gems/ruby-2.0.0-p247/gems/wasabi-3.2.3/lib/wasabi/resolver.rb:32:in `resolve'

После поиска в Google я увидел этот пост, который, кажется, предлагает мне установить и потребовать гем "httpclient", который я сделал, а затем повторил попытку. Без изменений, По-прежнему получаю ту же ошибку.

Может кто-нибудь подсказать мне, как поступить.....

Спасибо

1 ответ

Решение

Я пытался получить доступ к WSDL, который вы указали, используя curl из командной строки. Я не могу получить доступ к WSDL, потому что я не авторизован. Я предполагаю, что сначала вы должны предоставить учетные данные как часть вашего запроса https. Вот почему wasabiвыходит из строя. Не удается найти документ WSDL.

Согласно документации, это можно сделать, внедрив следующий код в создание вашего клиента:

client = Savon.client(wsdl: ...,
                      basic_auth: [ 'username', 'password' ],
                      log: true,
                      log_level: :debug,
                      pretty_print_xml: true)
client.call(...)
Другие вопросы по тегам