0

我正在尝试从 spyne/SOAP/HTTP 应用程序返回复杂结果,但在我的数据开始之前,我看到了预期的“CommandResponse”级别,但也看到了意外的“CommandResult”级别(在 XML 中)。

我没有在任何地方创建“CommandResult”对象,那么它来自哪里,我该如何阻止它?例如... http://www.w3schools.com/webservices/ws_soap_example.asp ...显示 CommandResponse 但没有 CommandResult 级别。

4

2 回答 2

0

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

@srpc(..., _returns=[type1, type2...], _out_variable_names=["name1", "name2"...])

Spyne 现在将创建一个具有所需 CommandResponse 级别的结果,其中您的三个字段紧随其后,即您不必创建一个 ComplexModel 对象来隐式创建 CommandResults 级别。有用的参考在这里: http ://spyne.io/docs/2.10/reference/decorator.html 但是实际上并没有任何示例。

于 2015-07-15T09:23:14.320 回答
0

那是因为包装函数是 Spyne 中的默认值。包装的函数是:

1)比裸函数更容易使用,它只能接受和返回最大值。一种。

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

如果你想得到类似于 w3schools 中的返回文件,你必须传递_body_style='bare'@rpc装饰器。

但是,仅出于兼容性原因才建议使用它,并且应尽可能避免使用。

PS:Papadeltasierra 的回答也是正确的——这正是裸模式在幕后所做的。

于 2015-07-16T07:34:50.173 回答