WSDL导入无法使用savon 2.3.0

时间:2013-10-25 11:56:17

标签: ruby-on-rails web-services wsdl ruby-1.9.3 savon

我使用Savon 2.3使用wsdl文件调用Web服务,但是我的wsdl文件分为三个文件绑定,操作和定义,其中三个文件相互引用,如binding -> operations -> definition。 / p>

binding.wsdl 我有以下行导入 operations.wsdl

<wsdl:import location="operations.wsdl" namespace="http://site.com"/>

在我的 operations.wsdl 中,我有以下导入 definition.wsdl

<wsdl:import location="definition.wsdl" namespace="http://site.com/">

但是当我用operations对象调用Savon.client时,wsdl文件中定义的操作不会与client.operations一起返回,但是当我合并三个文件:authenticate_user时,在wsdl文件中定义,在数组中返回如下:

1.9.3p448 :014 > client = Savon.client(wsdl: "binding.wsdl", wsse_auth: ["Username","Password"])
1.9.3p448 :014 > client_combined = Savon.client(wsdl: "combined.wsdl", wsse_auth: ["Username","Password"])

1.9.3p448 :016 > client.operations
 => [] 
1.9.3p448 :017 > client_combined.operations
 => [:authenticate_user] 

我的问题是为什么Savon没有将相应的wsdl文件导入到一个然后使用它,或者我错过了什么。

这个问题与this非常相似,但是当我读到Ivan的评论时,它的版本与版本之间的行为有所不同,我使用的是Savon 2.3.0.,我认为最好单独询问一下。

1 个答案:

答案 0 :(得分:0)

根据Vimsha的评论Savon 2.3.0不支持xsd/wsdl: import,这是因为Savon使用的解析器非常基本,缺乏解析导入的功能。 Savon使用wasabi进行解析。

这已在Savon 3中得到解决,请参阅此thread

如果Savon 3中的导入仍然存在问题,您可以看到question