0

我尝试通过 SUDS0.4 将 python 客户端连接到 SOAP 服务器。通常,为了向 SOAP 函数提供复杂的参数,我使用 python 字典: 例如,如果 SOAP 参数看起来像:

<parameterDesignatorValuePair>
<parameterDesignator>Message</parameterDesignator>
<parameterValue>AAAABgBDAG8AdQBjAG8AdQ==</parameterValue>
</parameterDesignatorValuePair>

我的 python 代码如下所示:

result = client.service.myfunction(parameterDesignatorValuePair={'parameterDesignator':val1,'parameterValue':val2})

现在我尝试连接到一个我没有编程的 SOAP 服务器,但我知道我的请求的 SOAP 主体必须从现有的 java 客户端看起来如何:(感兴趣的一部分)

...
<parameterDesignatorValuePairSet>
<parameterDesignatorValuePair>
<parameterDesignator>Message</parameterDesignator>
<parameterValue>AAAABgBDAG8AdQBjAG8AdQ==</parameterValue>
</parameterDesignatorValuePair>
<parameterDesignatorValuePair>
<parameterDesignator>Sender</parameterDesignator>
<parameterValue>AAAABwBSAGUAbgBhAHUAbABk</parameterValue>
</parameterDesignatorValuePair>
</parameterDesignatorValuePairSet>
...

所以我必须传递由两个具有完全相同名称“parameterDesignatorValuePair”的复杂参数组成的复杂参数“parameterDesignatorValuePairSet”:我不能通过使用python字典来做到这一点:-(

我尝试使用列表和元组,但 SUDS 返回错误...

感谢您的帮助

4

1 回答 1

1

您是否尝试过这样做:

param = client.factory.create('ns1:parameterDesignatorValuePairNamespace')
param.parameterDesignator = val1
param.parameterValue = val2

client.service.FunctionName(param)

名称空间可通过在 SUDS 连接后打印 WSDL 文件来获得。

于 2011-03-30T08:16:09.240 回答