我正在尝试使用Spyne从Python提供Web服务。我已经为一个名为SayHello(名称,时间)的测试函数工作了。但是,我想知道为什么Spyne在名为SayHello的complexType中包装名称和次数参数?这使得在.NET中使用Web服务更加笨拙(即,而不是appClient.SayHello("Dave", 5)
我必须做SayHello args = new SayHello(); args.name = "Dave"; args.times = "5"; appClient.SayHello(args);
,这是非常不优雅的。)
有没有办法强制Spyne不要在complexType中包装参数?
这是Spyne生成的当前wsdl的相关部分:
<xs:schema targetNamespace="solutions.sfcs" elementFormDefault="qualified">
<xs:complexType name="SayHello">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" nillable="true"/>
<xs:element name="times" type="xs:integer" minOccurs="0" nillable="true"/>
</xs:sequence>
</xs:complexType>
答案 0 :(得分:2)
您可以将_body_style='bare'
传递给@rpc
装饰器以防止包装。但你最有可能得到:
Exception: body_style='bare' can handle at most one function argument.
如果你能以不破坏其他测试的方式解决这个问题,我可以合并你的补丁。