我正在尝试从spyne / SOAP / HTTP应用程序返回Complex结果,但我在数据启动之前看到了预期的'CommandResponse'级别,但也看到了一个意外的'CommandResult'级别(在XML中)。 / p>
我没有在任何地方创建'CommandResult'对象,所以它来自何处以及如何阻止它?例如...... http://www.w3schools.com/webservices/ws_soap_example.asp ...显示CommandResponse但没有CommandResult级别。
答案 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的回答也是正确的 - 这正是裸模式在幕后的作用。