如何阻止Spyne在complexType中包装参数?

时间:2013-03-13 20:16:17

标签: c# python soap spyne

我正在尝试使用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>

1 个答案:

答案 0 :(得分:2)

您可以将_body_style='bare'传递给@rpc装饰器以防止包装。但你最有可能得到:

Exception: body_style='bare' can handle at most one function argument.

如果你能以不破坏其他测试的方式解决这个问题,我可以合并你的补丁。