在元素中包装函数参数 complexType
Wrap function parameters complexType in an element
我正在尝试使用 Spyne 实现现有的网络服务。
我有一个带有两个参数的函数,WSDL 应该如下所示:
<wsdl:types>
<xs:schema targetNamespace="http://example.com/" elementFormDefault="qualified" >
<s:element name="getData">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="login" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
[...]
我的代码包含此函数的以下装饰器:
@rpc(String(min_occurs=0, max_occurs=1, nillable=False),
String(min_occurs=0, max_occurs=1, nillable=False),
_returns=Unicode)
def getData(self, login, password):
return 'data'
生成此 WSDL 的对象:
<wsdl:types>
<xs:schema elementFormDefault="qualified" targetNamespace="http://example.com/">
<xs:complexType name="getData">
<xs:sequence>
<xs:element minOccurs="0" name="login" type="xs:string" />
<xs:element minOccurs="0" name="password" type="xs:string" />
</xs:sequence>
</xs:complexType>
[...]
因此,我没有包含 complexType 的元素,而是只有一个简单的 complexType。这种差异会导致与现有实现兼容的客户端出现问题。有没有办法使用 Spyne 将 complexType 包装在元素中?
Spyne 的 wsdl 应同时包含:
<xs:complexType name="getData"> (...) </xs:complexType>
和
<s:element name="getData" type="tns:getData">
在元素内部具有 complexType 等同于通过适当的引用将其置于外部,因此您的解析器应该能够处理这两种形式。
如果您对客户端没有任何控制权(在这种情况下通常是这种情况),您别无选择,只能修补 Spyne。如果你想走那条路,请加入 spyne ml (http://lists.spyne.io/listinfo/people) 我们可以谈谈。
我正在尝试使用 Spyne 实现现有的网络服务。 我有一个带有两个参数的函数,WSDL 应该如下所示:
<wsdl:types>
<xs:schema targetNamespace="http://example.com/" elementFormDefault="qualified" >
<s:element name="getData">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="login" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
[...]
我的代码包含此函数的以下装饰器:
@rpc(String(min_occurs=0, max_occurs=1, nillable=False),
String(min_occurs=0, max_occurs=1, nillable=False),
_returns=Unicode)
def getData(self, login, password):
return 'data'
生成此 WSDL 的对象:
<wsdl:types>
<xs:schema elementFormDefault="qualified" targetNamespace="http://example.com/">
<xs:complexType name="getData">
<xs:sequence>
<xs:element minOccurs="0" name="login" type="xs:string" />
<xs:element minOccurs="0" name="password" type="xs:string" />
</xs:sequence>
</xs:complexType>
[...]
因此,我没有包含 complexType 的元素,而是只有一个简单的 complexType。这种差异会导致与现有实现兼容的客户端出现问题。有没有办法使用 Spyne 将 complexType 包装在元素中?
Spyne 的 wsdl 应同时包含:
<xs:complexType name="getData"> (...) </xs:complexType>
和
<s:element name="getData" type="tns:getData">
在元素内部具有 complexType 等同于通过适当的引用将其置于外部,因此您的解析器应该能够处理这两种形式。
如果您对客户端没有任何控制权(在这种情况下通常是这种情况),您别无选择,只能修补 Spyne。如果你想走那条路,请加入 spyne ml (http://lists.spyne.io/listinfo/people) 我们可以谈谈。