4

如何使用“选择”参数生成对方法的请求?

http://127.0.0.1/service?wsdl的 wsdl 的一部分:

<xs:complexType name="ByA">
<xs:序列>
...
</xs:sequence>
</xs:complexType>
<xs:complexType name="ByB">
<xs:序列>
...
</xs:sequence>
</xs:complexType>

<xs:complexType name="GetMethodRequest">
<xs:选择>
<xs:element name="byA" type="s0:ByA" />
<xs:元素名称="byB" type="s0:ByB" />
</xs:选择>
</xs:complexType>

当我做

from suds.client import Client
client = Client("http://127.0.0.1/service?wsdl")
print client

我懂了

获取方法()

没有任何论据。

如何使用 byA 或 byB 调用 GetMethod?

4

3 回答 3

5

这是 suds 中的一个已知错误 https://fedorahosted.org/suds/ticket/342

于 2011-05-12T11:49:08.877 回答
1

I fixed it so:

class MyPlugin(DocumentPlugin):
    def setChoice(self, context):
        if not context.children:
            return
        for i in context.children:
            if i.name == "choice":
                for j in i.children:
                    i.parent.append(j)
            else:
                self.setChoice(i)

    def parsed(self, context):
        self.setChoice(context.document)


plugin = MyPlugin()
client = Client("http://127.0.0.1/service?wsdl", plugins=[plugin])
于 2015-12-28T14:06:25.800 回答
0

没有看到整个 wsdl 就很难知道,你的链接是你的本地机器。

Suds Client 类使用Service Class作为与 wsdl 交互的实例变量。你有没有尝试过这样的事情?

from suds.client import Client
client = Client("http://127.0.0.1/service?wsdl")
client.service.GetMethod("byA")

或者

client.service.GetMethod("byB")

于 2011-05-11T12:49:32.447 回答