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(...)