1

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

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_userwsdl 文件中定义的三个文件时,会在数组中返回如下所示:

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.,我认为最好单独提出这个问题。

4

1 回答 1

0

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

这个问题已经解决了Savon 3,请看这个帖子

如果您仍然有进口问题,Savon 3您可以看到这个问题

于 2013-10-25T14:13:37.890 回答