我正在尝试使用spyne在 Python 中实现 SOAP 服务。我的客户发送这样的 SOAP 请求:
<ns1:loadServices xmlns:ns1="dummy">
<serviceParams xmlns="dummy">
<header>
<user>foo</user>
<password>secret</password>
</header>
</serviceParams>
</ns1:loadServices>
但是我很难将该结构放入 spyne 模型中。
到目前为止,我想出了这段代码:
class Header(ComplexModel):
__type_name__ = 'header'
user = Unicode
password = Unicode
class serviceParams(ComplexModel):
__type_name__ = 'serviceParams'
header = Header()
class DummyService(ServiceBase):
@rpc(serviceParams, _returns=Unicode)
def loadServices(ctx, serviceParams):
return '42'
问题是 spyne 生成和 XSD 是这样的:
...
<xs:complexType name="loadServices">
<xs:sequence>
<xs:element name="serviceParams" type="tns:serviceParams" minOccurs="0" nillable="true"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="serviceParams"/>
...
这不是我想要的,因为它本质上说“serviceParams”只是一个没有孩子的空标签。
这是 spyne 中的错误吗?还是我错过了什么?