我正在尝试使用 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/