在 rails 中通过以下代码调用.net 的 WCF 接口方法时,总是提示
REXML::UndefinedNamespaceException (Undefined prefix s found)
请问如何能通过 rails 正常调用 WCF 方法
require 'soap/wsdlDriver'
WSDL_URL = "http://10.68.2.17/PacsService/PacsService.svc?wsdl"
factory = SOAP::WSDLDriverFactory.new(WSDL_URL)
driver = factory.create_rpc_driver
a=driver.HelloWorld(1)
puts a["HelloWorldResult"]
其中“http://10.68.2.17/PacsService/PacsService.svc?wsdl"格式如下:
<wsdl:definitions name="PacsService" targetNamespace="http://tempuri.org/">
<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import schemaLocation="http://10.68.2.17/PacsService/PacsService.svc?xsd=xsd0" namespace="http://tempuri.org/"/>
<xsd:import schemaLocation="http://10.68.2.17/PacsService/PacsService.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
<xsd:import schemaLocation="http://10.68.2.17/PacsService/PacsService.svc?xsd=xsd2" namespace="http://schemas.microsoft.com/Message"/>
</xsd:schema>
</wsdl:types>
……
若是通过上述代码调用.net 的 WebService 接口,例如 WSDL_URL=”http://localhost:2965/WebService1.asmx?WSDL“就能调用成功, 其中”http://localhost:2965/WebService1.asmx?WSDL“格式为
……
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
<s:element name="HelloWorld">
<s:complexType /> </s:element>
……
</wsdl:types>
……