我试图用Ruby脚本连接到SOAP。
我正在关注这铁路一集。我安装了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并将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'在谷歌了一下后,我看到了这帖子,它似乎建议我应该安装并要求创业板"httpclient“,然后再试一次。没有更改,仍然得到相同的错误。
有谁能帮我一下如何进行……
谢谢
发布于 2014-04-11 06:37:58
我尝试从命令行使用curl访问您提供的WSDL。我无法访问未经授权的WSDL /C。我想,首先您必须将凭据作为https请求的一部分提供。这就是为什么wasabi失败的原因。它找不到WSDL文档。
根据可以通过在客户端创建中注入以下代码来完成的文档:
client = Savon.client(wsdl: ...,
basic_auth: [ 'username', 'password' ],
log: true,
log_level: :debug,
pretty_print_xml: true)
client.call(...)https://stackoverflow.com/questions/22990936
复制相似问题