为什么Spyne复杂的结果同时具有响应和结果水平?

时间:2015-07-15 07:51:19

标签: soap spyne

我正在尝试从spyne / SOAP / HTTP应用程序返回Complex结果,但我在数据启动之前看到了预期的'CommandResponse'级别,但也看到了一个意外的'CommandResult'级别(在XML中)。 / p>

我没有在任何地方创建'CommandResult'对象,所以它来自何处以及如何阻止它?例如...... http://www.w3schools.com/webservices/ws_soap_example.asp ...显示CommandResponse但没有CommandResult级别。

2 个答案:

答案 0 :(得分:0)

为避免这种情况,您想使用...

@srpc(...,_ return = [type1,type2 ...],_ out_variable_names = [" name1"," name2" ...])

Spyne现在将创建一个结果,该结果具有所需的CommandResponse级别,紧跟其下方的三个字段,即您不必创建隐式创建CommandResults级别的ComplexModel对象。有用的参考文献在这里: http://spyne.io/docs/2.10/reference/decorator.html 然而,实际上没有任何例子。

答案 1 :(得分:0)

那是因为包装函数是Spyne中的默认函数。包裹的功能是:

1)比裸功能更容易使用,只能接受和返回最大功能。一种类型。

2)根据Xml标准,任何Xml类型都应该使用一个根节点进行序列化。

如果您想要返回与w3schools类似的归档文档,则必须将_body_style='bare'传递给@rpc装饰器。

但是,出于兼容性原因,建议使用它,如果可能,应尽量避免使用。

PS:Papadeltasierra的回答也是正确的 - 这正是裸模式在幕后的作用。