我是一个 SOAP 新手,负责恢复旧的肥皂接口。我已将soap 服务移植到新路径上的新tomcat 上(并保持客户端不变)。我发送请求: http://myserver:8181/soap/SoapTest?wsdl 我回来了:
<wsdl:definitions xmlns:ns1="http://webservices.mycompany.com"
xmlns:ns3="http://schemas.xmlsoap.org/wsdl/soap/http"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.mycompany.com/SoapTest"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="SoapTestService"
targetNamespace="http://www.mycompany.com/SoapTest">
<wsdl:import location="http://myserver:8181/soap/SoapTest?wsdl=SoapTest.wsdl"
namespace="http://webservices.mycompany.com"></wsdl:import>
<wsdl:binding name="SoapTestServiceSoapBinding" type="ns1:SoapTest">...</wsdl:binding>
<wsdl:service name="SoapTestService">...</wsdl:service>
</wsdl:definitions>
似乎很有希望。对导入位置SoapTest?wsdl=SoapTest.wsdl的请求返回:
<wsdl:definitions xmlns:ns1="http://webservices.mycompany.com"
xmlns:ns2="http://jaxb.dev.java.net/array" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="SoapTest"
targetNamespace="http://webservices.mycompany.com">
<wsdl:types>
<xs:schema xmlns:tns="http://webservices.mycompany.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://webservices.mycompany.com" version="1.0">
<xs:complexType name="sessionObj">
<xs:sequence>
<xs:element name="code" type="xs:int"/>
<xs:element name="id" type="xs:long"/>
<xs:element minOccurs="0" name="role" type="xs:string"/>
<xs:element minOccurs="0" name="username" type="xs:string"/>
</xs:sequence>
</xs:complexType>
... (and so on)
因此,客户端可以接收成员 xs 名称:类型关联,但似乎不是 - 或没有应用它们。那是 ...
呵呵.. 经审查,我看到 xs 被用作命名空间,但定义了 xmlns:xsd?这怎么可能发生?
对此接口 (Linux) 的 ZSI 客户端查询(来自 Windows,如果这有任何区别)接收包含预期数据有效负载的响应,然后将每个数据项映射到单独的“属性” - 生成通用属性列表。
我期待一个类型化成员的列表,每个属性都转换为它的 xs 类型(例如上面的 int、long、string、string),对吗?
提前感谢任何线索。