ruby - 使用 ruby​​ 和 savon 的 SOAP 服务

标签 ruby soap wsdl savon

我正在尝试使用 ruby​​ 和 Savon 来使用网络服务。

测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2

require 'rubygems'
require 'savon'

client = Savon::Client.new "http://www.webservicex.net/stockquote.asmx?WSDL"
client.get_quote do |soap| 
  soap.body = {:symbol => "AAPL"} 
end

返回 SOAP 异常。检查 soap 信封,在我看来 soap 请求没有正确的命名空间。

任何人都可以建议我可以做些什么来完成这项工作吗? 我对其他 Web 服务端点也有同样的问题。

谢谢,

最佳答案

这是 Savon 处理命名空间的方式的问题。查看此答案 Why is "wsdl" namespace interjected into action name when using savon for ruby soap communication?

您可以通过专门调用 soap.input 并向其传递一个数组来解决此问题,第一个元素是方法,第二个元素是包含命名空间的散列

require 'rubygems'
require 'savon'

client = Savon::Client.new "http://www.webservicex.net/stockquote.asmx?WSDL"
client.get_quote do |soap| 
  soap.input = [ 
    "GetQuote", 
    { "xmlns" => "http://www.webserviceX.NET/" } 
  ]
  soap.body = {:symbol => "AAPL"} 
end

关于ruby - 使用 ruby​​ 和 savon 的 SOAP 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3453275/

相关文章:

Ruby - 从对象内部调用 setter

Ruby OptionParser 不解析 -- 命令正确

ruby-on-rails - 如何解决 "ruby installation is missing psych"错误?

java - CXF 中有没有办法禁用 SoapCompressed header 以进行调试?

java - Spring 安全 : Method Level Security Prevent Access to a Role

web-services - 什么是网络服务?

java - Jax-Ws 解码错误

windows - ruby win32api & 结构 (VerQueryValue)

java - Maven generatePackage 用于从模式定义生成类的 wsdl

c# - HTTP 请求未经客户端身份验证方案 'Anonymous' 授权。从服务器收到的身份验证 header 是“基本”